/*******************************************************************************
* Copyright (c) 2006, 2015 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     IBM Corporation - initial API and implementation
*********************************************************************************/

// This file was generated by LPG

package org.eclipse.cdt.internal.core.dom.lrparser.cpp;

public class CPPTemplateTypeParameterParserprs implements lpg.lpgjavaruntime.ParseTable, CPPTemplateTypeParameterParsersym {

    public interface IsKeyword {
        public final static byte isKeyword[] = {0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0
        };
    };
    public final static byte isKeyword[] = IsKeyword.isKeyword;
    public final boolean isKeyword(int index) { return isKeyword[index] != 0; }

    public interface BaseCheck {
        public final static short baseCheck[] = {0,
            0,0,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,3,1,1,1,1,1,1,
            1,1,2,2,1,1,0,1,0,4,
            2,3,2,3,2,2,1,0,1,1,
            4,4,4,8,8,3,3,4,4,3,
            3,2,2,7,7,7,7,4,4,5,
            6,3,2,2,1,1,1,2,2,2,
            2,2,2,2,2,2,4,7,9,3,
            0,1,2,2,1,2,3,4,1,0,
            3,1,0,3,5,1,4,1,3,3,
            1,3,3,3,1,3,3,1,3,3,
            1,3,3,3,3,1,3,3,1,3,
            1,3,1,3,1,3,1,3,1,5,
            1,3,5,3,3,1,3,3,1,3,
            1,3,1,3,1,3,1,3,1,5,
            1,1,3,3,3,3,3,3,3,3,
            3,3,3,1,2,1,1,3,3,3,
            3,3,3,3,3,3,3,3,1,2,
            1,3,1,0,1,0,1,1,0,1,
            1,1,1,1,1,1,1,1,3,4,
            3,2,1,4,2,1,2,5,7,5,
            1,4,1,0,5,7,2,8,1,1,
            2,2,3,2,3,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,2,1,0,4,4,2,2,2,2,
            2,1,0,1,1,1,1,1,1,2,
            1,2,2,2,1,1,2,2,1,2,
            2,1,2,2,1,2,2,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,3,
            4,4,5,2,5,6,5,0,1,0,
            7,8,0,1,3,1,0,1,3,1,
            7,6,0,7,6,1,0,6,5,6,
            4,1,3,1,0,1,1,2,1,1,
            3,1,3,1,1,1,1,3,9,2,
            2,3,2,5,3,7,0,1,2,2,
            1,0,1,1,1,3,1,2,1,1,
            2,3,1,1,1,3,2,1,2,2,
            9,8,2,1,3,1,3,1,0,1,
            0,2,1,1,3,1,3,2,1,5,
            8,1,2,3,1,1,7,6,3,0,
            0,1,3,1,1,5,6,6,7,7,
            0,0,1,0,1,1,1,2,4,2,
            2,1,5,1,1,1,1,1,1,1,
            2,1,0,1,3,1,1,2,3,2,
            1,2,2,1,0,1,3,3,5,5,
            4,1,1,1,1,0,1,5,2,2,
            1,2,2,1,0,1,3,4,3,1,
            1,5,2,1,1,3,3,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,2,2,7,1,0,1,3,
            1,1,2,4,2,4,7,9,5,1,
            3,1,0,1,1,3,2,3,2,2,
            1,0,1,1,4,5,2,1,2,2,
            2,2,2,2,2,1,1,2,1,1,
            2,4,4,2,1,2,5,5,3,3,
            1,4,3,1,0,1,3,1,1,-126,
            0,0,0,0,-2,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-39,-3,0,-7,
            0,0,0,0,0,0,-398,0,-215,0,
            0,-273,-8,0,-15,0,-519,0,0,0,
            0,-12,-22,-474,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-16,0,0,
            0,-246,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -448,0,0,-368,0,0,-37,0,0,0,
            0,0,0,0,-109,0,0,-58,0,0,
            0,0,-461,0,0,0,0,0,-532,0,
            0,0,0,0,0,0,0,0,0,-283,
            0,0,0,0,0,0,0,0,0,0,
            -6,0,-36,0,-19,0,0,-4,0,0,
            0,0,0,0,0,-170,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-128,0,0,0,0,-32,0,
            0,0,-23,0,0,0,0,0,0,0,
            0,0,0,-26,0,0,0,0,0,0,
            0,0,0,0,0,-20,0,0,0,0,
            0,0,-412,0,-171,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-182,0,0,-132,0,0,0,0,
            -337,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-83,0,
            -24,0,0,0,0,0,0,0,0,0,
            -25,-187,-440,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-5,0,
            0,0,-107,0,0,0,-175,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-41,0,0,-49,0,0,-85,
            0,0,0,0,0,0,0,-270,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-191,0,0,0,0,0,0,
            0,0,-546,0,0,-335,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-196,0,0,0,
            0,-27,0,0,0,0,0,0,0,0,
            0,0,0,0,-597,-45,0,0,0,0,
            0,-28,0,0,0,0,0,0,0,0,
            0,-217,0,0,0,0,-30,0,0,0,
            0,0,0,0,0,-1,0,0,0,-167,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-91,-44,0,0,
            0,0,0,0,0,0,-55,0,-50,0,
            0,0,0,0,0,-576,0,0,0,0,
            -266,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-86,0,0,-92,0,0,0,0,
            0,0,-51,0,-173,0,0,0,-291,0,
            0,0,-598,0,0,0,0,-52,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-10,
            0,0,-53,0,0,0,0,0,0,-268,
            0,0,0,0,0,-211,0,0,0,0,
            0,-515,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -108,0,0,0,0,-433,0,0,-186,0,
            0,0,0,0,0,0,-18,0,0,0,
            0,-54,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-421,-174,0,-498,0,-89,0,
            0,0,0,0,0,-466,0,0,0,0,
            0,0,0,-154,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -35,-311,0,0,0,0,0,0,0,0,
            -90,-298,-96,0,0,0,0,0,0,0,
            0,-81,0,0,0,0,-99,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-34,
            0,0,0,0,0,0,0,0,-56,0,
            0,0,0,-195,0,0,0,0,0,0,
            0,0,0,-82,0,0,0,0,-446,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -106,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-68,0,0,0,
            -205,0,0,0,0,-129,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-408,0,
            -213,0,0,0,0,0,0,0,0,-69,
            0,0,-284,0,0,0,0,0,-21,0,
            0,0,0,-425,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-38,-194,0,0,0,
            0,0,0,0,0,0,0,-443,0,0,
            -260,0,0,0,-79,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-403,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-290,0,0,0,
            0,0,0,0,0,0,0,-177,0,0,
            0,0,0,0,0,0,0,0,-155,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-110,0,-183,0,
            0,0,0,0,0,-465,0,-221,0,0,
            -489,0,0,0,0,-156,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-342,0,-184,0,0,0,0,
            0,0,0,0,-70,0,0,-507,0,0,
            0,0,-157,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -71,0,-464,0,-338,0,0,0,0,0,
            0,0,0,0,-509,0,0,0,0,-158,
            0,0,0,0,-410,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-192,0,0,0,0,0,0,0,0,
            0,-539,0,0,0,0,-159,0,0,0,
            0,-457,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-261,0,
            0,0,0,0,0,0,0,0,-540,0,
            0,0,0,-160,0,0,0,0,-470,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-492,0,-72,0,-473,0,0,0,0,
            0,0,0,0,0,-354,0,0,0,0,
            -161,0,0,0,0,-494,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-73,0,
            -74,0,-265,0,0,0,0,0,0,0,
            0,0,-366,0,0,0,0,-162,0,0,
            0,0,-542,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-278,0,0,-75,0,0,
            0,0,0,0,-76,0,0,0,0,-371,
            0,0,0,0,-163,0,0,0,0,-77,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-279,-78,0,-80,0,0,0,0,0,
            0,-84,0,0,0,0,-372,0,0,0,
            0,-164,0,0,0,0,-563,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-281,-87,
            0,-88,0,0,0,0,0,0,-94,0,
            -548,0,0,-419,0,0,0,0,-165,0,
            0,0,0,-588,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-297,-95,0,-98,0,
            0,0,0,0,0,-105,0,0,0,0,
            -468,0,0,0,0,-292,0,0,0,0,
            -113,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-352,-116,0,-131,0,-303,0,0,
            0,0,0,0,0,0,0,-97,0,0,
            0,0,-302,0,0,0,0,-356,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-203,0,-188,0,0,0,0,-276,
            0,-277,0,0,-112,0,0,0,0,-322,
            0,0,0,0,-179,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-180,0,-189,
            -516,0,0,0,0,0,0,0,0,0,
            0,0,0,-29,0,-305,0,-263,0,-442,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-323,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-304,-514,0,0,0,0,0,-199,
            0,0,0,0,0,-200,0,0,0,-455,
            0,0,0,0,0,0,0,-447,0,0,
            0,0,0,-480,0,-201,0,0,0,0,
            0,-324,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-467,0,
            0,-391,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-11,0,-345,0,-587,
            0,0,-202,0,0,-207,0,-257,-208,0,
            0,0,0,0,0,0,0,-325,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-209,0,0,-348,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-40,0,-506,0,0,-210,0,
            0,0,0,-341,0,0,0,-537,0,0,
            0,0,0,-326,0,0,0,0,-93,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -100,0,0,-222,0,0,-223,0,0,0,
            0,0,0,0,-353,0,0,-224,0,0,
            0,0,0,0,0,-589,0,0,0,0,
            0,-536,0,0,0,0,0,0,0,-327,
            0,0,0,0,-225,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-490,0,0,-226,
            -569,0,0,0,0,0,0,0,0,0,
            0,0,0,-485,0,-42,0,0,-365,0,
            0,0,0,-346,0,-227,-602,-409,0,-406,
            0,0,0,0,0,-328,0,0,0,0,
            -400,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-176,-228,0,-101,0,0,0,0,
            0,0,0,0,0,-229,-481,0,0,0,
            0,0,0,-454,0,0,0,0,0,0,
            0,-230,-407,0,-231,0,0,0,0,0,
            0,-329,0,0,0,0,-435,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-124,
            0,-232,-133,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-233,0,-280,
            0,0,0,0,0,0,0,0,0,0,
            -339,-520,0,0,0,0,0,-330,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-219,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -234,0,0,-235,0,0,0,0,0,-393,
            0,-236,0,-373,0,-374,-575,-237,0,0,
            0,0,0,-331,0,0,0,0,-238,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -294,0,0,-445,0,0,0,0,0,0,
            0,0,0,0,0,-301,0,-118,0,-239,
            0,-240,0,-430,0,0,0,-350,0,0,
            -389,0,0,-243,0,0,0,0,0,-332,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-247,-125,0,0,
            0,0,0,0,-351,0,0,-248,-47,0,
            -249,0,0,-119,0,-306,0,-340,0,-250,
            0,-434,0,0,0,-369,0,0,0,0,
            0,0,0,0,0,-432,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-336,0,0,0,0,0,-388,
            -390,0,0,-392,0,0,0,-172,0,0,
            0,0,0,-477,0,0,0,0,0,0,
            0,-487,0,0,-479,0,0,0,0,0,
            0,-592,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -488,0,0,-251,0,0,-178,0,-401,0,
            0,0,0,-545,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-252,-590,0,
            -253,0,0,0,0,0,0,-197,0,0,
            -411,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-395,0,0,0,0,0,0,-397,
            0,0,-420,-428,0,-429,-245,0,0,-501,
            0,0,-254,0,0,-497,-255,-450,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-437,-282,0,-256,0,0,
            0,0,0,0,0,0,-258,0,0,-451,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-259,-264,-269,
            0,-496,0,0,0,0,0,0,-504,0,
            0,-271,-272,0,-286,0,0,0,0,-355,
            0,-287,-288,-198,-204,0,-463,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-289,-312,0,-517,0,
            0,0,0,-343,0,-344,0,0,-523,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-349,0,-357,0,
            -544,0,0,0,0,0,0,-562,0,0,
            -307,-564,0,-572,-579,-358,0,-363,0,0,
            -308,-525,-364,0,0,-534,-104,0,0,0,
            0,-334,0,0,0,0,-216,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-370,-377,0,-378,0,-379,-380,0,
            0,0,0,-309,-381,-382,0,-383,0,0,
            0,0,-384,-535,0,-385,0,0,0,0,
            0,0,0,0,-321,0,0,0,0,-220,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-262,0,-405,0,-386,0,0,-387,0,
            -402,-404,-422,-426,-427,-438,-441,-453,-460,0,
            -547,0,0,0,0,-469,-475,0,0,0,
            -152,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-559,0,
            -560,0,-476,0,0,0,-319,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-478,-482,-484,-499,0,-522,0,
            -566,0,-524,-526,0,0,-527,-528,-529,-531,
            -565,0,-583,0,-549,-550,-552,-557,-561,0,
            -241,0,-153,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-242,0,0,-320,0,0,
            0,0,-299,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-573,-581,-593,-603,0,
            0,0,0,-595,0,-601,0,0,0,0,
            0,0,0,-367,0,-149,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-413,0,-316,
            0,0,0,0,-414,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-150,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-415,-416,0,-151,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-317,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-13,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-318,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-33,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-399,0,0,0,0,0,0,0,0,
            0,0,0,0,-533,-431,-458,0,0,0,
            0,0,0,0,-459,0,0,0,0,-491,
            -135,0,0,-500,-512,0,0,0,-111,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-538,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-143,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-144,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-145,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-146,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-313,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-314,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-315,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-347,0,0,0,
            0,0,0,0,0,0,0,0,0,-376,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-543,-166,-31,
            0,0,0,0,-14,0,0,0,0,0,
            0,-594,0,0,0,0,0,0,0,-122,
            0,0,0,-568,0,0,0,0,0,0,
            0,0,-556,0,0,0,0,0,-570,0,
            -574,0,0,0,-333,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-147,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-267,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-584,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-577,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-449,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-148,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -505,0,0,0,-123,0,0,0,-359,0,
            -360,0,0,0,-48,0,0,0,0,0,
            -285,0,0,0,-578,-596,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-600,0,0,0,0,0,0,0,0,
            0,0,-521,0,0,-214,0,0,0,-361,
            0,0,0,0,0,-134,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-362,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-591,0,0,0,0,0,0,0,0,
            0,0,0,0,-103,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-424,
            0,0,0,0,0,0,0,0,0,0,
            0,-138,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-114,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-139,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-530,0,0,0,0,0,0,0,
            0,0,0,-9,0,-168,-444,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-46,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-551,0,0,0,0,0,
            0,-423,0,0,0,0,0,-169,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-181,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-553,0,0,0,
            0,0,0,0,0,0,0,0,0,-17,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-190,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-567,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-193,0,0,
            0,0,0,-417,0,0,0,0,0,-585,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -580,0,0,0,0,0,0,0,-418,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-212,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-582,0,0,0,0,0,0,0,
            -462,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-218,0,0,0,0,0,-508,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-586,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-396,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-599,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-456,0,0,0,0,
            0,0,0,0,0,0,0,-57,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-604,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-140,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-141,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-142,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-244,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-60,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-61,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-62,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-63,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-64,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -65,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-66,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-67,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -127,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-136,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-137,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-206,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-295,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-59,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-436,-483,0,
            0,0,0,0,-300,0,0,0,0,0,
            -472,0,0,0,0,0,0,0,0,-486,
            0,0,0,-513,0,0,0,0,0,0,
            0,0,-293,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-43,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-452,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -274,0,0,0,0,0,0,0,0,0,
            0,0,0,-502,0,0,0,0,0,-394,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-439,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-471,-510,0,0,
            0,0,0,0,-511,0,0,0,0,0,
            0,0,0,0,0,0,0,-375,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-495,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -503,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-185,0,0,0,
            0,0,0,0,0,0,0,0,-310,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-102,0,0,0,0,0,0,-518,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-275,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -115,0,0,0,0,0,-571,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -117,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -130,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-493,0,0,0,0,
            0,0,0,0,-120,0,0,0,0,0,
            0,0,0,0,-554,0,0,0,0,0,
            0,-555,0,0,0,0,0,0,0,0,
            0,0,0,-121,0,0,0,0,0,0,
            -558,0,0,0,0,0,0,0,0,0,
            0,0,-296,0,0,0,0,0,0,-541,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0
        };
    };
    public final static short baseCheck[] = BaseCheck.baseCheck;
    @Override
    public final int baseCheck(int index) { return baseCheck[index]; }
    public final static short rhs[] = baseCheck;
    @Override
    public final int rhs(int index) { return rhs[index]; };

    public interface BaseAction {
        public final static char baseAction[] = {
            191,5,154,94,94,30,30,81,81,39,
            39,42,42,218,1,1,16,16,16,16,
            16,16,16,17,17,17,15,11,11,6,
            6,6,6,6,6,2,75,75,4,4,
            12,12,44,44,155,155,156,67,67,43,
            18,18,18,18,18,18,18,18,18,18,
            18,18,18,18,18,18,18,18,18,18,
            157,157,157,132,132,19,19,19,19,19,
            19,19,19,19,19,19,19,19,20,20,
            192,192,193,193,194,160,160,161,161,158,
            158,162,159,159,21,21,22,22,23,23,
            23,24,24,24,24,25,25,25,26,26,
            26,31,31,31,31,31,33,33,33,34,
            34,35,35,36,36,38,38,40,40,41,
            41,45,45,45,45,45,47,47,47,53,
            53,55,55,61,61,62,62,63,63,64,
            64,65,65,65,65,65,65,65,65,65,
            65,65,65,65,29,29,46,46,46,46,
            46,46,46,46,46,46,46,46,46,37,
            28,163,163,105,105,195,195,104,219,219,
            82,82,82,82,82,82,82,82,82,83,
            83,83,79,79,66,66,196,196,84,84,
            84,116,116,197,197,85,85,85,85,198,
            198,86,86,86,86,86,87,87,95,95,
            95,95,95,95,95,95,56,56,56,56,
            56,133,133,131,131,57,199,27,27,27,
            27,27,50,50,69,69,69,69,69,138,
            138,134,134,134,134,134,135,135,135,136,
            136,136,137,137,137,165,165,165,70,70,
            70,70,70,71,71,71,13,14,14,14,
            14,14,14,14,14,14,14,14,106,139,
            139,139,139,139,139,111,111,111,166,167,
            167,112,112,200,169,169,168,168,140,140,
            117,92,92,141,59,49,170,170,60,58,
            97,97,171,171,164,164,142,143,143,144,
            89,89,172,172,77,77,77,73,73,72,
            78,78,80,80,68,68,68,54,98,98,
            108,107,107,51,51,74,74,76,76,52,
            109,109,109,99,99,99,100,100,101,101,
            101,102,102,118,118,118,120,120,119,119,
            220,220,103,103,202,202,202,202,202,146,
            48,48,174,201,201,147,147,148,148,148,
            149,176,203,203,32,32,110,114,114,114,
            114,205,122,121,121,113,113,113,177,178,
            178,178,178,178,178,178,178,178,178,178,
            207,207,204,204,206,206,179,180,180,180,
            180,181,208,124,123,123,209,209,182,182,
            182,182,115,115,115,210,210,8,8,9,
            211,211,212,183,173,173,184,184,185,186,
            186,7,7,10,213,213,213,213,213,213,
            213,213,213,213,213,213,213,213,213,213,
            213,213,213,213,213,213,213,213,213,213,
            213,213,213,213,213,213,213,213,213,213,
            213,213,213,213,213,213,90,93,93,187,
            187,151,151,125,125,125,125,125,125,3,
            152,152,150,150,188,221,222,222,223,223,
            224,225,225,189,190,190,190,190,214,214,
            214,127,127,127,127,127,128,129,129,126,
            126,96,91,88,88,175,175,130,130,215,
            215,215,153,153,145,145,216,216,191,191,
            1119,35,2489,2466,4990,1128,27,30,31,1052,
            1067,26,28,2429,296,25,23,50,1467,106,
            76,77,108,1510,1751,1715,1939,1346,1484,177,
            588,1894,308,1988,1941,2010,1995,2713,2033,69,
            2035,176,1986,1394,1471,1331,191,157,35,330,
            2939,266,1572,1389,1258,35,1032,32,4804,3474,
            27,30,31,1052,1067,375,28,3633,2107,269,
            264,265,2856,35,1032,32,718,600,27,30,
            31,1052,1067,26,28,1409,296,25,23,50,
            1467,106,76,77,108,1510,1751,1715,2938,379,
            189,1642,35,490,2823,5769,309,2505,2136,2928,
            276,279,282,627,707,2295,984,3307,2289,35,
            1108,425,368,2823,645,388,355,901,357,157,
            3529,350,891,390,1351,753,1546,2484,5866,285,
            157,35,317,349,380,653,803,385,2730,1451,
            49,69,3902,1628,378,1647,4724,1802,71,35,
            433,2129,1476,2426,3491,2616,2265,35,1032,32,
            718,5370,27,30,31,1052,1067,26,28,1409,
            296,25,23,50,1467,106,76,77,108,1510,
            1751,1715,2938,1261,2357,162,342,346,1307,1533,
            35,1032,32,1231,266,41,30,31,1052,1067,
            2358,2927,2418,2950,157,2082,2080,34,3176,2941,
            484,3108,278,264,265,3567,1808,3074,3111,3173,
            161,579,923,157,3349,2265,35,1032,32,718,
            5370,27,30,31,1052,1067,26,28,1409,296,
            25,23,50,1467,106,76,77,108,1510,1751,
            1715,2938,1304,155,162,3483,2233,35,1032,32,
            5052,1232,27,30,31,1052,1067,57,28,630,
            2927,2597,2950,389,3483,483,3565,3566,2941,2389,
            3108,1998,550,576,3167,580,3074,3111,3173,161,
            579,2711,228,1610,35,1032,32,4230,654,27,
            30,31,1052,1067,375,28,2894,3249,3177,71,
            35,433,2891,71,35,2270,2225,2265,35,1032,
            32,718,5370,27,30,31,1052,1067,26,28,
            1409,296,25,23,50,1467,106,76,77,108,
            1510,1751,1715,2938,1213,49,162,71,35,433,
            69,550,576,3167,580,4726,2129,1269,931,35,
            330,360,2927,325,2950,352,3347,357,3000,371,
            2941,361,3108,362,2505,3208,4486,3177,3074,3111,
            3173,161,579,157,35,330,2475,35,1032,32,
            718,5370,27,30,31,1052,1067,26,28,1409,
            296,25,23,50,1467,106,76,77,108,1510,
            1751,1715,2938,61,1985,162,2079,1701,35,1032,
            32,4441,1752,27,30,31,1052,1067,26,28,
            643,2927,548,2950,902,585,1642,35,314,2941,
            3939,3108,2895,550,576,3167,580,3074,3111,3173,
            161,579,1701,35,1032,32,4441,2897,27,30,
            31,1052,1067,59,28,2624,3013,3217,2174,3177,
            3279,35,1032,32,718,1704,27,30,31,1052,
            1067,26,28,1409,296,25,23,50,1467,106,
            76,77,108,1510,1751,1715,1939,1619,2956,2494,
            3581,1894,3008,1988,1941,2010,1995,61,2882,1402,
            1657,4250,551,576,3167,580,2613,35,1032,32,
            718,2566,27,30,31,1052,1067,26,28,1409,
            296,25,23,50,1467,106,76,77,108,1510,
            1751,1715,1939,69,715,177,2389,1894,4788,1988,
            1941,2010,1995,2957,2033,2389,2035,176,3351,157,
            35,3373,415,2333,35,1032,32,718,2963,27,
            30,31,1052,1067,26,28,1409,296,25,23,
            50,1467,106,76,77,108,1510,1751,1715,1939,
            69,598,177,3015,1894,4235,1988,1941,2010,1995,
            2636,2033,426,2035,176,3351,1642,35,314,415,
            5803,418,2543,35,1032,32,718,379,27,30,
            31,1052,1067,26,28,1409,296,25,23,50,
            1467,106,76,77,108,1510,1751,1715,1939,441,
            535,177,645,1894,2627,1988,1941,2010,1995,497,
            2033,61,2035,176,3351,4866,2889,605,415,157,
            35,2232,2230,422,416,3084,546,2924,35,1032,
            32,718,3076,27,30,31,1052,1067,26,28,
            1409,296,25,23,50,1467,106,76,77,108,
            1510,1751,1715,1939,2882,2389,177,1645,1894,69,
            1988,1941,2010,1995,766,2033,2889,2035,176,480,
            423,416,3084,409,3279,35,1032,32,718,2104,
            27,30,31,1052,1067,26,28,1409,296,25,
            23,50,1467,106,76,77,108,1510,1751,1715,
            1939,1257,1642,35,567,1894,6068,1988,1941,2010,
            2839,69,1886,69,273,296,835,2956,927,413,
            416,3084,2924,35,1032,32,718,1103,27,30,
            31,1052,1067,26,28,1409,296,25,23,50,
            1467,106,76,77,108,1510,1751,1715,1939,496,
            1518,177,266,1894,3377,1988,1941,2010,1995,2147,
            2033,392,2035,176,157,35,2080,311,409,594,
            274,264,265,408,2924,35,1032,32,718,2713,
            27,30,31,1052,1067,26,28,1409,296,25,
            23,50,1467,106,76,77,108,1510,1751,1715,
            1939,69,1618,177,2136,1894,6147,1988,1941,2010,
            1995,391,2033,88,2035,176,102,3645,368,594,
            409,2924,35,1032,32,718,1570,27,30,31,
            1052,1067,26,28,1409,296,25,23,50,1467,
            106,76,77,108,1510,1751,1715,1939,4585,1885,
            177,2389,1894,5176,1988,1941,2010,1995,348,2033,
            1531,2035,176,157,35,2080,313,191,407,2683,
            35,1032,32,718,1087,27,30,31,1052,1067,
            26,28,1409,296,25,23,50,1467,106,76,
            77,108,1510,1751,1715,1939,1895,2461,35,312,
            1894,1618,1988,1941,2010,1995,93,2033,2790,2042,
            197,157,35,1108,425,2407,35,1032,32,718,
            405,27,30,31,1052,1067,26,28,1409,296,
            25,23,50,1467,106,76,77,108,1510,1751,
            1715,1939,3136,49,177,5723,1894,266,1988,1941,
            2010,1995,2364,2033,46,2035,176,157,35,2080,
            3368,175,484,363,2684,281,264,265,1788,35,
            1032,32,1513,889,40,30,31,1052,1067,2924,
            35,1032,32,718,2426,27,30,31,1052,1067,
            26,28,1409,296,25,23,50,1467,106,76,
            77,108,1510,1751,1715,1939,70,61,177,155,
            1894,4928,1988,1941,2010,1995,1087,2033,2389,2035,
            176,157,35,1108,425,188,2924,35,1032,32,
            718,466,27,30,31,1052,1067,26,28,1409,
            296,25,23,50,1467,106,76,77,108,1510,
            1751,1715,1939,468,332,177,155,1894,3488,1988,
            1941,2010,1995,365,2033,1219,2035,176,157,35,
            1108,425,187,2924,35,1032,32,718,2418,27,
            30,31,1052,1067,26,28,1409,296,25,23,
            50,1467,106,76,77,108,1510,1751,1715,1939,
            489,1233,177,2389,1894,155,1988,1941,2010,1995,
            1943,2033,51,2035,176,157,35,1108,425,186,
            2924,35,1032,32,718,2566,27,30,31,1052,
            1067,26,28,1409,296,25,23,50,1467,106,
            76,77,108,1510,1751,1715,1939,471,71,177,
            458,1894,69,1988,1941,2010,1995,3206,2033,3001,
            2035,176,157,35,1108,425,185,2924,35,1032,
            32,718,2566,27,30,31,1052,1067,26,28,
            1409,296,25,23,50,1467,106,76,77,108,
            1510,1751,1715,1939,470,2820,177,97,1894,69,
            1988,1941,2010,1995,871,2033,321,2035,176,157,
            35,1108,425,184,2924,35,1032,32,718,2566,
            27,30,31,1052,1067,26,28,1409,296,25,
            23,50,1467,106,76,77,108,1510,1751,1715,
            1939,469,2389,177,1398,1894,2573,1988,1941,2010,
            1995,6108,2033,322,2035,176,157,35,2080,316,
            183,2924,35,1032,32,718,2566,27,30,31,
            1052,1067,26,28,1409,296,25,23,50,1467,
            106,76,77,108,1510,1751,1715,1939,3252,55,
            177,1349,1894,69,1988,1941,2010,1995,2761,2033,
            332,2035,176,2102,35,2080,311,182,2924,35,
            1032,32,718,2566,27,30,31,1052,1067,26,
            28,1409,296,25,23,50,1467,106,76,77,
            108,1510,1751,1715,1939,69,98,177,237,1894,
            2173,1988,1941,2010,1995,56,2033,331,2035,176,
            157,3484,2080,74,181,2924,35,1032,32,718,
            147,27,30,31,1052,1067,26,28,1409,296,
            25,23,50,1467,106,76,77,108,1510,1751,
            1715,1939,69,227,177,1630,1894,2545,1988,1941,
            2010,1995,314,2033,340,2035,176,2102,35,2080,
            3485,180,2924,35,1032,32,718,2566,27,30,
            31,1052,1067,26,28,1409,296,25,23,50,
            1467,106,76,77,108,1510,1751,1715,1939,69,
            3077,177,1336,1894,3270,1988,1941,2010,1995,2004,
            2033,3191,2035,176,157,35,2080,3489,179,2924,
            35,1032,32,718,2567,27,30,31,1052,1067,
            26,28,1409,296,25,23,50,1467,106,76,
            77,108,1510,1751,1715,1939,69,2328,177,405,
            1894,704,1988,1941,2010,1995,1489,2033,419,2035,
            176,157,35,2080,566,178,2924,35,1032,32,
            718,1338,27,30,31,1052,1067,26,28,1409,
            296,25,23,50,1467,106,76,77,108,1510,
            1751,1715,1939,2540,1910,177,1456,1894,69,1988,
            1941,2010,1995,2824,2033,1045,2035,176,157,35,
            1108,425,192,2924,35,1032,32,718,1724,27,
            30,31,1052,1067,26,28,1409,296,25,23,
            50,1467,106,76,77,108,1510,1751,1715,1939,
            308,586,177,2529,1894,491,1988,1941,2010,1995,
            228,2033,3133,2035,176,157,35,1108,425,140,
            3045,35,1032,32,718,1374,27,30,31,1052,
            1067,26,28,1409,296,25,23,50,1467,106,
            76,77,108,1510,1751,1715,2938,308,762,162,
            2600,1243,35,1032,32,4230,3474,27,30,31,
            1052,1067,375,28,2738,2927,2737,2950,2361,4235,
            931,3533,330,2941,376,3108,427,464,1607,273,
            296,3074,3111,3173,161,173,3045,35,1032,32,
            718,379,27,30,31,1052,1067,26,28,1409,
            296,25,23,50,1467,106,76,77,108,1510,
            1751,1715,2938,69,69,162,1107,266,2826,1471,
            1635,310,3249,355,901,357,2326,2032,350,891,
            1985,2927,2888,2950,2935,274,264,265,2505,2941,
            349,3108,4228,1618,2505,1775,2401,3074,3111,3173,
            161,172,3045,35,1032,32,718,1169,27,30,
            31,1052,1067,26,28,1409,296,25,23,50,
            1467,106,76,77,108,1510,1751,1715,2938,2889,
            2677,162,1788,35,1032,32,2677,1704,2707,30,
            31,1052,1067,343,346,1307,69,2927,61,2950,
            3250,4235,5114,2437,412,2941,934,3108,1800,2394,
            412,2494,3377,3074,3111,3173,161,171,3045,35,
            1032,32,718,379,27,30,31,1052,1067,26,
            28,1409,296,25,23,50,1467,106,76,77,
            108,1510,1751,1715,2938,475,3745,162,645,1243,
            35,1032,32,4230,3474,27,30,31,1052,1067,
            375,28,2136,2927,1984,2950,1968,35,490,3684,
            5769,2941,544,3108,2505,479,369,493,2505,3074,
            3111,3173,161,170,3045,35,1032,32,718,1894,
            27,30,31,1052,1067,26,28,1409,296,25,
            23,50,1467,106,76,77,108,1510,1751,1715,
            2938,1894,410,162,2399,266,3004,2433,3259,534,
            2677,355,901,357,359,2540,350,891,1982,2927,
            586,2950,594,284,264,265,2505,2941,2666,3108,
            3071,386,157,3589,3358,3074,3111,3173,161,169,
            3045,35,1032,32,718,2071,27,30,31,1052,
            1067,26,28,1409,296,25,23,50,1467,106,
            76,77,108,1510,1751,1715,2938,2882,2677,162,
            2274,1243,35,1032,32,4230,3474,27,30,31,
            1052,1067,375,28,1885,2927,2065,2950,5176,2878,
            35,312,588,2941,2673,3108,313,585,1724,637,
            2540,3074,3111,3173,161,168,3045,35,1032,32,
            718,2396,27,30,31,1052,1067,26,28,1409,
            296,25,23,50,1467,106,76,77,108,1510,
            1751,1715,2938,2429,331,162,1894,266,428,464,
            487,3565,3566,355,901,357,485,2601,350,891,
            439,2927,4421,2950,2059,287,264,265,5790,2941,
            3657,3108,587,2540,2094,1342,358,3074,3111,3173,
            161,167,3045,35,1032,32,718,2637,27,30,
            31,1052,1067,26,28,1409,296,25,23,50,
            1467,106,76,77,108,1510,1751,1715,2938,2684,
            1894,162,1877,2243,35,1032,32,5052,1561,27,
            30,31,1052,1067,56,28,443,2927,667,2950,
            2461,35,315,430,464,2941,89,3108,215,102,
            5700,1232,3190,3074,3111,3173,161,166,3045,35,
            1032,32,718,1169,27,30,31,1052,1067,26,
            28,1409,296,25,23,50,1467,106,76,77,
            108,1510,1751,1715,2938,1822,467,162,1710,35,
            1032,32,4441,417,27,30,31,1052,1067,58,
            28,1913,2891,2927,2952,2950,429,464,42,3248,
            2505,2941,233,3108,1232,1906,1232,3190,1791,3074,
            3111,3173,161,165,3045,35,1032,32,718,486,
            27,30,31,1052,1067,26,28,1409,296,25,
            23,50,1467,106,76,77,108,1510,1751,1715,
            2938,2597,3205,162,1788,35,1032,32,364,371,
            3025,30,31,1052,1067,2891,2319,2891,69,2927,
            2432,2950,1001,4235,2953,35,565,2941,69,3108,
            60,1232,585,2630,2440,3074,3111,3173,161,164,
            3045,35,1032,32,718,379,27,30,31,1052,
            1067,26,28,1409,296,25,23,50,1467,106,
            76,77,108,1510,1751,1715,2938,1825,1894,162,
            645,3164,371,3166,371,69,1618,2091,589,1518,
            2693,1902,2891,3377,69,2927,2154,2950,1570,4235,
            753,1618,1232,2941,2340,3108,1518,585,24,2141,
            3377,3074,3111,3173,161,163,3105,35,1032,32,
            718,379,27,30,31,1052,1067,26,28,1409,
            296,25,23,50,1467,106,76,77,108,1510,
            1751,1715,2938,2136,2667,162,645,266,370,371,
            69,69,2420,2891,69,1266,2952,368,1518,5768,
            2136,2927,3377,2950,61,278,264,265,5964,2941,
            2346,3108,61,2402,4600,2637,6048,3074,3111,3173,
            161,160,3165,35,1032,32,718,4666,27,30,
            31,1052,1067,26,28,1409,296,25,23,50,
            1467,106,76,77,108,1510,1751,1715,1939,366,
            371,177,2136,1894,335,1988,1941,2010,1995,1561,
            2033,61,2035,176,925,6055,368,1894,222,3279,
            35,1032,32,718,2505,27,30,31,1052,1067,
            26,28,1409,296,25,23,50,1467,106,76,
            77,108,1510,1751,1715,1939,2428,1849,319,2505,
            1894,1386,1988,1941,2010,1995,94,2033,1894,2042,
            197,3279,35,1032,32,718,3362,27,30,31,
            1052,1067,26,28,1409,296,25,23,50,1467,
            106,76,77,108,1510,1751,1715,1939,69,44,
            3248,2677,1894,69,1988,1941,2010,1995,4727,2033,
            69,2042,197,69,69,1429,69,2327,723,1316,
            61,2399,2939,1729,6189,587,2637,1106,3279,35,
            1032,32,718,460,27,30,31,1052,1067,26,
            28,1409,296,25,23,50,1467,106,76,77,
            108,1510,1751,1715,1939,69,1017,3349,2508,1894,
            5781,1988,1941,2010,1995,255,2033,2539,2042,197,
            3279,35,1032,32,718,329,27,30,31,1052,
            1067,26,28,1409,296,25,23,50,1467,106,
            76,77,108,1510,1751,1715,1939,388,835,499,
            2537,1894,69,1988,1941,2010,1995,5794,2033,69,
            2042,197,3084,2740,2762,2568,380,653,803,385,
            1017,3349,2606,2638,1894,1894,578,3279,35,1032,
            32,718,459,27,30,31,1052,1067,26,28,
            1409,296,25,23,50,1467,106,76,77,108,
            1510,1751,1715,1939,68,53,2678,3073,1894,2637,
            1988,1941,2010,1995,2644,2033,3134,2042,197,3441,
            35,1032,32,718,462,27,30,31,1052,1067,
            26,28,1409,296,25,23,50,1467,106,76,
            77,108,1510,1751,1715,1939,324,2706,339,2607,
            1894,69,1988,1941,2010,1995,2057,2033,3247,2042,
            197,2787,69,2827,69,3248,2085,1126,2782,4350,
            4572,2888,2637,2881,2198,3366,2637,157,35,1108,
            425,1892,3387,35,1032,32,718,1894,27,30,
            31,1052,1067,26,28,1409,296,25,23,50,
            1467,106,76,77,108,1510,1751,1715,2938,49,
            324,212,266,1007,657,232,761,87,829,1365,
            2129,863,266,3587,3702,1929,2446,2927,577,2950,
            281,264,265,2246,2637,2941,1532,3108,2628,3366,
            284,264,265,3074,3479,3333,35,1032,32,718,
            1894,27,30,31,1052,1067,26,28,1409,296,
            25,23,50,1467,106,76,77,108,1510,1751,
            1715,2938,1424,231,1518,266,2705,4235,3377,1896,
            52,3043,2252,2886,3135,1814,2605,2947,2502,2978,
            2927,2637,2950,570,264,265,2979,2739,2941,3849,
            3108,3279,35,1032,32,718,3436,27,30,31,
            1052,1067,26,28,1409,296,25,23,50,1467,
            106,76,77,108,1510,1751,1715,1939,2136,2637,
            338,2637,1894,3194,1988,1941,2822,3333,35,1032,
            32,718,368,27,30,31,1052,1067,26,28,
            1409,296,25,23,50,1467,106,76,77,108,
            1510,1751,1715,2938,2106,2786,3009,3129,235,3103,
            233,3101,5938,3195,87,397,4235,3067,3099,3193,
            3219,2637,2927,2637,2950,3220,173,3234,2746,3288,
            2941,1894,3428,3279,35,1032,32,718,379,27,
            30,31,1052,1067,26,28,1409,296,25,23,
            50,1467,106,76,77,108,1510,1751,1715,1939,
            334,2178,4242,3365,1894,1894,1988,2828,3333,35,
            1032,32,718,1894,27,30,31,1052,1067,26,
            28,1409,296,25,23,50,1467,106,76,77,
            108,1510,1751,1715,2938,2333,3249,3342,2965,2715,
            6984,6984,6984,90,2637,6984,2637,6984,6984,6984,
            6984,6984,6984,2927,1894,2950,3279,35,1032,32,
            718,3433,27,30,31,1052,1067,26,28,1409,
            296,25,23,50,1467,106,76,77,108,1510,
            1751,1715,1939,256,3163,226,6984,1894,1894,2748,
            3333,35,1032,32,718,1894,27,30,31,1052,
            1067,26,28,1409,296,25,23,50,1467,106,
            76,77,108,1510,1751,1715,2938,6984,67,6984,
            6984,6984,6984,6984,6984,66,6984,6984,6984,6984,
            6984,6984,6984,6984,6984,2927,6984,3419,3279,35,
            1032,32,718,6984,27,30,31,1052,1067,26,
            28,1409,296,25,23,50,1467,106,76,77,
            108,1510,1751,1715,1939,6984,4445,1894,1894,2811,
            3279,35,1032,32,718,6984,27,30,31,1052,
            1067,26,28,1409,296,25,23,50,1467,106,
            76,77,108,1510,1751,1715,1939,65,64,6984,
            6984,2814,3333,35,1032,32,718,6984,27,30,
            31,1052,1067,26,28,1409,296,25,23,50,
            1467,106,76,77,108,1510,1751,1715,2938,1743,
            35,1032,32,4230,1400,27,30,31,1052,1067,
            375,28,3333,35,1032,32,718,3425,27,30,
            31,1052,1067,26,28,1409,296,25,23,50,
            1467,106,76,77,108,1510,1751,1715,2938,1820,
            35,1032,32,4230,6182,27,30,31,1052,1067,
            375,28,1360,35,1032,32,4804,3426,27,30,
            31,1052,1067,375,28,2671,2707,1894,6984,387,
            1471,355,901,357,6984,1894,350,891,6984,388,
            1894,69,6984,6984,1894,2497,1471,6984,826,157,
            35,1108,425,189,6984,6984,143,55,380,653,
            803,385,3531,6984,234,54,2136,1894,755,189,
            101,355,901,357,3309,592,350,891,1668,388,
            369,49,6984,6984,355,901,357,6984,2666,353,
            891,6984,2129,1547,6984,6984,6984,488,380,653,
            803,385,6984,3279,35,1032,32,718,2531,27,
            30,31,1052,1067,26,28,1409,296,25,23,
            50,1467,106,76,77,108,1510,1751,1715,2626,
            3279,35,1032,32,718,6984,27,30,31,1052,
            1067,26,28,1409,296,25,23,50,1467,106,
            76,77,108,1510,1751,1715,2664,6984,6984,6984,
            6984,402,3279,35,1032,32,718,6984,27,30,
            31,1052,1067,26,28,1409,296,25,23,50,
            1467,106,76,77,108,1510,1751,1715,2676,3279,
            35,1032,32,718,6984,27,30,31,1052,1067,
            26,28,1409,296,25,23,50,1467,106,76,
            77,108,1510,1751,1715,2692,3279,35,1032,32,
            718,6984,27,30,31,1052,1067,26,28,1409,
            296,25,23,50,1467,106,76,77,108,1510,
            1751,1715,3414,3279,35,1032,32,718,6984,27,
            30,31,1052,1067,26,28,1409,296,25,23,
            50,1467,106,76,77,108,1510,1751,1715,3416,
            3279,35,1032,32,718,6984,27,30,31,1052,
            1067,26,28,1409,296,25,23,50,1467,106,
            76,77,108,1510,1751,1715,3418,1221,35,3482,
            32,4804,3474,27,30,31,1052,1067,375,28,
            3279,35,1032,32,718,6984,27,30,31,1052,
            1067,26,28,1409,296,25,23,50,1467,106,
            76,77,108,1510,1751,1715,3916,6984,1894,69,
            243,35,1108,425,1471,3495,35,1108,425,4742,
            6984,2136,3302,6984,6984,6984,6984,1471,271,296,
            157,35,1108,425,1894,368,6984,189,414,355,
            901,357,49,2671,350,891,2880,308,600,1894,
            189,1894,6984,2129,1377,69,1592,6984,6984,195,
            1471,6984,49,6984,4961,3902,266,6984,6984,6984,
            3364,189,6984,2129,2223,6984,6984,2188,6984,5023,
            3372,5085,213,189,269,264,265,3279,35,1032,
            32,718,3476,27,30,31,1052,1067,26,28,
            1409,296,25,23,50,1467,106,76,77,108,
            1510,1751,2695,157,35,1108,425,6984,6984,6984,
            6984,309,229,6984,6984,276,279,282,627,707,
            2155,35,1032,32,4230,3474,27,30,31,1052,
            1067,375,28,6984,1894,49,454,456,3481,1351,
            753,1546,2484,5866,285,6984,2129,2948,1466,35,
            3482,32,4230,3474,27,30,31,1052,1067,375,
            28,6984,6984,2641,2556,3279,35,1032,32,718,
            2616,27,30,31,1052,1067,26,28,1409,296,
            25,23,50,1467,106,76,77,108,1510,1751,
            2732,259,355,901,357,2250,600,350,891,69,
            1471,69,6984,6984,1471,2780,1471,4472,6984,349,
            6241,157,35,1108,425,1894,1894,6984,262,189,
            355,901,357,193,6984,350,891,189,3372,189,
            213,6247,230,2677,6984,387,3708,1592,3715,237,
            249,903,1894,49,6984,3109,3666,236,246,247,
            248,250,6984,1,2129,1476,2436,202,600,6984,
            69,4235,342,346,1307,1471,2250,6984,6984,6984,
            201,1471,5209,216,200,203,204,205,206,207,
            262,189,6984,379,3664,388,6984,6984,189,6984,
            3372,3567,213,69,193,2677,6984,3787,1471,6984,
            3275,237,249,903,380,653,803,385,1362,236,
            246,247,248,250,2531,6984,6984,6984,6984,202,
            6984,189,6984,6984,6984,6984,6984,455,456,3481,
            3788,6984,201,6984,214,217,200,203,204,205,
            206,207,1511,35,1032,32,4230,1400,27,30,
            31,1052,1067,375,28,1413,35,1032,32,4804,
            6984,27,30,31,1052,1067,375,28,6984,6984,
            1974,3450,6984,6984,3377,6984,6984,6984,6984,6984,
            6984,6984,3279,35,1032,32,718,4483,27,30,
            31,1052,1067,26,28,1409,296,25,23,50,
            1467,106,76,77,108,1510,2534,6984,6984,2136,
            6984,6984,6984,6984,355,901,357,6984,6984,350,
            891,6984,388,369,2136,6984,6984,355,901,357,
            6984,589,351,891,6984,388,2188,6984,4600,6984,
            3377,380,653,803,385,6984,6984,6984,6984,2126,
            6984,590,6984,6984,382,653,803,385,3279,35,
            1032,32,718,6984,27,30,31,1052,1067,26,
            28,1409,296,25,23,50,1467,106,76,77,
            108,1510,2537,345,6984,6984,6984,6984,600,6984,
            2136,6984,6984,6984,2393,6984,1388,2781,6984,4235,
            6984,4235,4235,6984,369,6984,6984,6984,6984,6984,
            262,189,243,35,1108,425,388,6984,6984,6984,
            3372,3849,213,3849,3849,2677,6984,6984,6984,6984,
            96,237,249,903,6984,382,653,803,385,236,
            246,247,248,250,49,431,6984,6984,6984,202,
            600,6984,69,6984,6984,2129,2151,1471,1388,6984,
            6984,6984,201,4235,6984,3588,200,203,204,205,
            206,207,262,189,243,35,1108,425,6984,2235,
            189,6984,3372,6984,213,3849,6984,2677,6984,1753,
            6984,6984,6984,237,249,903,6984,542,6984,396,
            542,236,246,247,248,250,49,517,6984,6984,
            6984,202,600,6984,3591,2245,2268,2129,2288,541,
            2393,6984,541,6984,201,4235,6984,211,200,203,
            204,205,206,207,262,189,501,35,1108,425,
            6984,2188,6984,6984,3372,539,213,3849,539,2677,
            6984,6984,6984,6984,6984,237,249,903,6984,6984,
            6984,396,6984,236,246,247,248,250,49,603,
            6984,6984,6984,202,600,6984,3625,2245,2268,2129,
            47,652,6984,6984,3564,6984,201,6984,6984,209,
            200,203,204,205,206,207,262,189,243,35,
            1108,425,6984,2750,2250,6984,3372,6984,213,1471,
            69,2677,6984,6984,6984,1471,6984,237,249,903,
            6984,6984,6984,542,6984,236,246,247,248,250,
            49,689,193,6984,6984,202,600,6984,189,2250,
            6984,2129,47,6984,1471,541,6984,4446,201,6984,
            6984,210,200,203,204,205,206,207,262,189,
            2292,35,1108,425,6984,740,6984,193,3372,6984,
            213,540,6984,2677,6984,6984,6984,6984,6984,237,
            249,903,6984,6984,6984,6984,6984,236,246,247,
            248,250,49,775,6984,6984,6984,202,600,6984,
            6984,2250,6984,2129,2861,6984,1471,6984,6984,3917,
            201,6984,6984,220,200,203,204,205,206,207,
            262,189,501,35,1108,425,6984,2235,2250,193,
            3372,6984,213,1471,6984,2677,6984,6984,6984,6984,
            6984,237,249,903,3925,6984,6984,6984,6984,236,
            246,247,248,250,49,861,193,6984,6984,202,
            600,6984,6984,6984,6984,2129,2876,6984,6984,6984,
            6984,6984,201,6984,6984,3658,200,203,204,205,
            206,207,262,189,501,35,1108,425,6984,5775,
            6984,6984,3372,6984,213,6984,6984,2677,6984,6984,
            6984,6984,6984,237,249,903,3930,6984,6984,6984,
            6984,236,246,247,248,250,49,947,6984,6984,
            6984,202,600,6984,6984,6984,6984,2129,47,6984,
            6984,6984,6984,3957,201,6984,6984,225,200,203,
            204,205,206,207,262,189,243,35,1108,425,
            6984,2864,6984,6984,3372,6984,213,6984,69,2677,
            6984,6984,6984,600,6984,237,249,903,6984,6984,
            6984,6984,6984,236,246,247,248,250,49,1033,
            6984,6984,6984,202,600,379,189,6984,6984,2129,
            47,6984,6984,6984,6984,2928,201,6984,6984,219,
            200,203,204,205,206,207,262,189,6984,6984,
            645,6984,6984,1671,6984,6984,3372,6984,213,6984,
            6984,2677,6984,6984,6984,6984,6984,237,249,903,
            6984,6984,6984,6984,2730,236,246,247,248,250,
            6984,6984,6984,6984,6984,202,6984,6984,6984,6984,
            6984,6984,6984,6984,6984,6984,6984,6984,201,6984,
            6984,228,200,203,204,205,206,207,3279,35,
            1032,32,718,6984,27,30,31,1052,1067,26,
            28,1409,296,25,23,50,1467,106,76,77,
            108,2548,3279,35,1032,32,718,6984,27,30,
            31,1052,1067,26,28,1409,296,25,23,50,
            1467,106,76,77,108,2575,3279,35,1032,32,
            718,6984,27,30,31,1052,1067,26,28,1409,
            296,25,23,50,1467,106,76,77,108,2600,
            3593,35,554,6984,6984,6984,6984,6984,6984,6984,
            6984,6984,6984,271,296,3279,35,1032,32,718,
            6984,27,30,31,1052,1067,26,28,1409,296,
            25,23,50,1467,106,76,77,85,6984,6984,
            6984,6984,6984,6984,6984,6984,3279,2082,1032,2176,
            718,266,27,30,31,1052,1067,26,28,1409,
            296,25,23,50,1467,106,76,77,84,269,
            264,265,3279,35,1032,32,718,6984,27,30,
            31,1052,1067,26,28,1409,296,25,23,50,
            1467,106,76,77,83,6984,6984,6984,6984,6984,
            6984,6984,6984,6984,6984,6984,6984,6984,6984,6984,
            276,279,282,627,707,6984,6984,6984,6984,6984,
            6984,6984,6984,6984,6984,6984,6984,6984,6984,6984,
            6984,6984,6984,6984,2286,2946,3361,3371,6159,3279,
            35,1032,32,718,6984,27,30,31,1052,1067,
            26,28,1409,296,25,23,50,1467,106,76,
            77,82,3279,35,1032,32,718,6984,27,30,
            31,1052,1067,26,28,1409,296,25,23,50,
            1467,106,76,77,81,6984,6984,6984,563,564,
            568,3279,35,1032,32,718,6984,27,30,31,
            1052,1067,26,28,1409,296,25,23,50,1467,
            106,76,77,80,3424,3279,35,1032,32,718,
            6984,27,30,31,1052,1067,26,28,1409,296,
            25,23,50,1467,106,76,77,79,3279,35,
            1032,32,718,6984,27,30,31,1052,1067,26,
            28,1409,296,25,23,50,1467,106,76,77,
            78,2984,35,1032,32,718,6984,27,30,31,
            1052,1067,26,28,1409,296,25,23,50,1467,
            106,76,77,104,3279,35,1032,32,718,6984,
            27,30,31,1052,1067,26,28,1409,296,25,
            23,50,1467,106,76,77,110,3279,35,1032,
            32,718,6984,27,30,31,1052,1067,26,28,
            1409,296,25,23,50,1467,106,76,77,109,
            3279,35,1032,32,718,6984,27,30,31,1052,
            1067,26,28,1409,296,25,23,50,1467,106,
            76,77,107,3279,35,1032,32,718,6984,27,
            30,31,1052,1067,26,28,1409,296,25,23,
            50,1467,106,76,77,105,3225,35,1032,32,
            718,6984,27,30,31,1052,1067,26,28,1409,
            296,25,23,50,1467,86,76,77,1576,243,
            35,1108,425,4235,6984,2055,35,1108,425,6984,
            6984,1843,6984,6984,6984,6984,4235,6984,6984,6984,
            243,35,1108,425,1932,262,6984,6984,6984,4235,
            6984,49,6984,157,35,1108,425,308,262,6984,
            6984,6984,2129,47,6984,6984,239,249,903,6984,
            6984,262,49,6984,238,246,247,248,250,239,
            249,903,6984,2129,47,49,1718,238,246,247,
            248,250,239,249,903,6984,2129,2619,6984,6984,
            238,246,247,248,250,6984,6984,1765,240,242,
            244,3263,6984,251,241,243,3544,35,1108,425,
            4742,240,242,244,3263,6984,251,241,243,272,
            296,3413,6984,6984,240,242,244,3263,6984,251,
            241,243,6984,6984,6984,6984,6984,6984,308,1869,
            6984,6047,6984,6984,6984,6984,6984,72,6984,6984,
            6984,6984,1916,6984,6047,6984,6984,266,6984,6984,
            6984,6984,6984,6984,6984,1963,6984,6047,6984,6984,
            6984,6984,6984,6984,6984,270,264,265,1360,35,
            1032,32,4804,6984,27,30,31,1052,1067,375,
            28,2066,35,1032,32,4230,4187,27,30,31,
            1052,1067,375,28,2144,35,1108,425,6984,6984,
            2021,6984,309,6984,6984,4235,277,280,283,627,
            707,6984,6984,6984,6984,6984,1665,6984,6984,6984,
            440,4235,2136,6984,6984,6984,49,262,6984,6984,
            6984,6984,6984,6984,6984,286,369,2129,47,6984,
            355,901,357,262,6984,351,891,6984,239,249,
            903,6984,6984,352,3347,357,238,246,247,248,
            250,647,6984,6984,239,249,903,6984,6984,6984,
            6984,6984,238,246,247,248,250,1754,243,35,
            1108,425,4235,6984,6984,243,35,1108,425,6984,
            240,242,244,3263,6984,582,241,243,157,35,
            1108,425,6984,6984,262,6984,240,242,244,3263,
            49,581,241,243,6984,6984,6984,49,6984,6984,
            6984,2129,47,6984,6984,239,249,903,2129,47,
            49,6984,6984,238,246,247,248,250,2110,6984,
            6984,2129,2884,4235,6984,1812,6984,6984,6984,6984,
            6984,2199,1859,2624,6984,6984,4235,6984,6984,6984,
            6984,6984,6984,6984,6984,262,6984,240,242,244,
            3263,6984,252,241,243,6984,6984,1179,262,6984,
            6984,4333,4235,6984,6984,6984,239,249,903,3642,
            35,554,6984,6984,238,246,247,248,250,239,
            249,903,272,296,262,6984,6984,238,246,247,
            248,250,1378,6984,6984,6984,3377,4235,6984,2467,
            35,1108,425,6984,6984,1210,444,5951,240,242,
            244,3263,6984,341,241,243,6984,6984,6984,3849,
            266,240,242,244,3263,1296,536,241,243,4333,
            4235,49,6984,6984,6984,6984,6984,6984,270,264,
            265,6984,2129,47,6984,6984,2136,445,446,447,
            3263,1378,262,6984,6984,3377,4235,2826,6984,6984,
            368,6984,600,6984,6984,6984,993,6984,6984,6984,
            6984,69,3250,1210,444,5951,600,6984,3849,277,
            280,283,627,707,379,189,6984,6984,6984,6984,
            4585,6984,6984,6984,221,396,6984,6984,379,189,
            6984,69,6984,6984,6984,2136,600,6984,3274,2601,
            3077,2245,2268,6984,6984,445,446,447,3263,368,
            6984,6984,6984,645,6984,6984,6984,6984,379,189,
            6984,6984,6984,6984,448,450,2670,6984,2928,6984,
            3250,4235,6984,6984,6984,69,6984,3118,6984,4666,
            4235,6984,6984,645,396,69,6984,563,564,569,
            600,1131,69,379,6215,6984,593,600,6984,3077,
            2245,2268,379,223,69,6984,6984,3387,6984,4235,
            6984,69,379,189,6984,6984,600,6984,645,379,
            189,6984,221,69,6984,6984,6984,645,4235,221,
            69,379,448,451,6984,4235,6984,2601,379,189,
            6984,6984,596,6984,2601,6984,6984,6984,221,6984,
            379,2366,6984,6984,6984,6984,645,379,6984,6984,
            6984,6984,6984,2601,6984,6984,6984,6984,6984,6984,
            6984,6984,6984,6984,6984,645,6984,6984,6984,6984,
            2423,6984,645,6984,3583,6984,6984,6984,6984,6984,
            6984,6984,6984,6984,6984,6984,6984,6984,6984,3674,
            6984,4254,6984,6984,6984,6984,597,6984,4269,6984,
            6984,6984,6984,6984,6984,6984,6984,6984,6984,6984,
            6984,6984,6984,6984,6984,6984,6984,4271,6984,6984,
            6984,6984,6984,6984,6984,6984,6984,6984,6984,6984,
            6984,6984,6984,6984,6984,6984,6984,6984,6984,6984,
            6984,6984,6984,6984,6984,6984,6984,6984,6984,6984,
            6984,6984,6984,6984,6984,6984,6984,6984,6984,6984,
            6984,6984,6984,6984,6984,6984,6984,6984,6984,6984,
            6984,6984,3935,6984,0,758,1,0,919,1,
            0,39,1,6999,0,39,1,6998,0,799,
            1,0,39,6999,0,39,6998,0,1153,354,
            0,1309,29,0,477,1361,0,491,1363,0,
            6999,48,0,6998,48,0,38,814,0,38,
            6999,0,38,6998,0,6990,1,0,6989,1,
            0,318,431,0,318,323,0,7252,275,0,
            7251,275,0,7358,275,0,7357,275,0,7279,
            275,0,7278,275,0,7277,275,0,7276,275,
            0,7275,275,0,7274,275,0,7273,275,0,
            7272,275,0,7291,275,0,7290,275,0,7289,
            275,0,7288,275,0,7287,275,0,7286,275,
            0,7285,275,0,7284,275,0,7283,275,0,
            7282,275,0,7281,275,0,39,275,6999,0,
            39,275,6998,0,7022,275,0,1309,424,0,
            4052,126,0,35,33,0,1,481,0,495,
            1165,0,494,1305,0,47,37,0,7022,1,
            0,39,1,0,639,91,0,32,34,0,
            39,814,0,1,1117,0,1,7291,0,1,
            7290,0,1,7289,0,1,7288,0,1,7287,
            0,1,7286,0,1,7285,0,1,7284,0,
            1,7283,0,1,7282,0,1,7281,0,43,
            7020,0,43,37,0,538,3262,0,7022,1,
            263,0,39,1,263,0,263,453,0,6999,
            37,0,6998,37,0,271,4425,0,425,32,
            0,424,29,0,4052,128,0,4052,127,0,
            1,5746,0,1,5385,0,1,5442,0,1,
            5509,0,1,5532,0,1,5561,0,1,5585,
            0,1,5608,0,1,2284,0,1,5416,0,
            1,7006,0,1,7005,0,1,7004,0,1,
            7003,0,1,7002,0,1,7001,0,1,7000,
            0,1,1119,0,1,1163,0,1,1178,0,
            1,1203,0,1,1282,0,1,672,0,367,
            482,0,6994,442,0,6993,442,0,1,2469,
            0,1,814,0,263,452,0,1,92,0,
            275,6999,0,275,6998,0,7020,45,0,37,
            45,0,1,367,0,2,6999,37,0,2,
            6998,37,0,6999,36,0,6998,36,0,538,
            5986,0,1,263,0,367,95,0,35,73,
            0,263,254,0,313,4934,0,263,253,0,
            6996,1,0,6992,1,0,1,263,3573,0,
            6993,263,0,3574,263,0,6996,420,0,6995,
            420,0,3586,263,0,10,12,0,8,10,
            12,0,3656,227,0,218,5147,0,3659,420,
            0,8,12,0
        };
    };
    public final static char baseAction[] = BaseAction.baseAction;
    @Override
    public final int baseAction(int index) { return baseAction[index]; }
    public final static char lhs[] = baseAction;
    @Override
    public final int lhs(int index) { return lhs[index]; };

    public interface TermCheck {
        public final static byte termCheck[] = {0,
            0,1,2,3,4,5,6,7,8,9,
            10,11,12,13,14,15,16,17,18,19,
            20,21,22,23,24,25,26,27,28,29,
            30,31,32,33,34,35,36,37,38,39,
            40,41,42,43,44,45,46,47,48,49,
            50,51,52,53,0,0,56,57,58,59,
            0,61,62,63,4,65,66,67,0,69,
            0,1,2,73,74,75,76,77,78,79,
            80,81,82,83,84,85,0,1,2,3,
            4,5,6,7,8,9,10,11,12,13,
            14,15,16,17,18,19,20,21,22,23,
            24,25,26,27,28,29,30,31,32,33,
            34,35,36,37,38,39,40,41,42,43,
            44,45,46,47,48,49,50,51,52,53,
            86,87,56,57,58,59,0,61,62,63,
            95,65,66,67,0,69,0,1,2,73,
            74,75,76,77,78,79,80,81,82,83,
            84,85,0,1,2,3,4,5,6,7,
            8,9,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,24,25,26,27,
            28,29,30,31,32,33,34,35,36,37,
            38,39,40,41,42,43,44,45,46,47,
            48,49,50,51,52,53,0,0,56,57,
            58,59,0,61,62,63,0,65,66,67,
            94,69,0,1,2,73,74,75,76,77,
            78,79,80,81,82,83,84,85,0,1,
            2,3,4,5,6,7,8,9,10,11,
            12,13,14,15,16,17,18,19,20,21,
            22,23,24,25,26,27,28,29,30,31,
            32,33,34,35,36,37,38,39,40,41,
            42,43,44,45,46,47,48,49,50,51,
            52,53,0,0,56,57,58,59,0,61,
            62,63,96,65,66,67,94,69,92,93,
            0,0,74,75,76,77,78,79,80,81,
            82,83,84,85,0,1,2,3,4,5,
            6,7,8,9,10,11,12,13,14,15,
            16,17,18,19,20,21,22,23,24,25,
            26,27,28,29,30,31,32,33,34,35,
            36,37,38,39,40,41,42,43,44,45,
            46,47,48,49,50,51,52,53,86,87,
            56,57,58,59,0,61,62,63,4,65,
            66,67,94,69,101,102,86,87,74,75,
            76,77,78,79,80,81,82,83,84,85,
            0,1,2,3,4,5,6,7,8,9,
            10,11,12,13,14,15,16,17,18,19,
            20,21,22,23,24,25,26,27,28,29,
            30,31,32,33,34,35,36,37,38,39,
            40,41,42,43,44,45,46,47,48,49,
            50,51,52,53,0,0,56,57,58,59,
            0,61,62,63,4,65,66,67,0,69,
            0,1,2,5,74,75,76,77,78,79,
            80,81,82,83,84,85,0,1,2,3,
            4,5,6,7,8,9,10,11,12,13,
            14,15,16,17,18,19,20,21,22,23,
            24,25,26,27,28,29,30,31,32,33,
            34,35,36,37,38,39,40,41,42,43,
            44,45,46,47,48,49,50,51,52,53,
            86,87,56,57,58,59,0,61,62,63,
            95,65,66,67,0,69,0,0,0,0,
            74,75,76,77,78,79,80,81,82,83,
            84,85,0,1,2,3,4,5,6,7,
            8,9,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,24,25,26,27,
            28,29,30,31,32,33,34,35,36,37,
            38,39,40,41,42,43,44,45,46,47,
            48,49,50,51,52,53,0,70,56,57,
            58,59,0,61,62,63,0,65,66,67,
            94,69,86,87,86,87,74,75,76,77,
            78,79,80,81,82,83,84,85,0,1,
            2,3,4,5,6,7,8,9,10,11,
            12,13,14,15,16,17,18,19,20,21,
            22,23,24,25,26,27,28,29,30,31,
            32,33,34,35,36,37,38,39,40,41,
            42,43,44,45,46,47,48,49,50,51,
            52,53,86,87,56,57,58,59,0,61,
            62,63,0,65,66,67,0,69,92,93,
            0,0,74,75,76,77,78,79,80,81,
            82,83,84,85,0,1,2,3,4,5,
            6,7,8,9,10,11,12,13,14,15,
            16,17,18,19,20,21,22,23,24,25,
            26,27,28,29,30,31,32,33,34,35,
            36,37,38,39,40,41,42,43,44,45,
            46,47,48,49,50,51,52,53,0,68,
            56,57,58,59,0,61,62,63,4,65,
            66,67,0,69,92,93,86,87,74,75,
            76,77,78,79,80,81,82,83,84,85,
            0,1,2,3,4,5,6,7,8,9,
            10,11,12,13,14,15,16,17,18,19,
            20,21,22,23,24,25,26,27,28,29,
            30,31,32,33,34,35,36,37,38,39,
            40,41,42,43,44,45,46,47,48,49,
            50,51,52,53,86,87,56,57,58,59,
            0,61,62,63,0,65,66,67,0,69,
            0,1,2,0,74,75,76,77,78,79,
            80,81,82,83,84,85,0,1,2,3,
            4,5,6,7,8,9,10,11,12,13,
            14,15,16,17,18,19,20,21,22,23,
            24,25,26,27,28,29,30,31,32,33,
            34,35,36,37,38,39,40,41,42,43,
            44,45,46,47,48,49,50,51,52,53,
            0,68,56,57,58,59,0,61,62,63,
            4,65,66,67,0,69,0,1,2,95,
            74,75,76,77,78,79,80,81,82,83,
            84,85,0,1,2,3,4,5,6,7,
            8,9,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,24,25,26,27,
            28,29,30,31,32,33,34,35,36,37,
            38,39,40,41,42,43,44,45,46,47,
            48,49,50,51,52,53,0,0,56,57,
            58,59,6,61,62,63,96,65,66,67,
            0,69,0,1,2,0,74,75,76,77,
            78,79,80,81,82,83,84,85,0,1,
            2,3,4,5,6,7,8,0,10,11,
            12,13,14,15,16,17,18,19,20,21,
            22,23,24,25,26,27,28,29,30,31,
            32,33,34,35,36,37,38,55,40,41,
            42,43,44,45,46,47,48,49,50,51,
            52,53,0,68,56,57,58,59,0,1,
            2,3,4,5,6,7,8,9,10,11,
            12,13,14,15,16,17,18,19,20,21,
            22,23,24,25,26,27,28,29,30,31,
            32,33,0,1,2,0,4,39,0,41,
            0,1,2,3,4,5,6,7,8,0,
            0,0,0,55,56,57,58,5,0,61,
            62,63,0,1,2,3,4,120,6,71,
            8,73,34,35,23,24,0,0,1,2,
            3,4,5,6,7,8,88,11,12,13,
            14,15,16,17,18,19,20,21,22,23,
            24,25,26,27,28,29,30,31,32,33,
            60,71,114,115,116,0,1,2,3,4,
            5,6,7,8,9,10,11,12,13,14,
            15,16,17,18,19,20,21,22,23,24,
            25,26,27,28,29,30,31,32,33,0,
            0,99,100,3,39,0,41,0,3,9,
            5,0,7,0,9,0,1,2,0,4,
            55,56,57,58,0,7,61,62,63,0,
            1,2,3,4,0,6,71,8,73,34,
            35,36,37,0,39,34,35,0,1,2,
            0,4,5,88,7,0,9,0,0,54,
            60,3,55,0,64,60,9,0,68,64,
            55,0,72,68,3,70,71,72,73,114,
            115,116,0,1,2,3,4,5,6,7,
            8,86,87,0,89,90,91,92,93,94,
            95,96,97,98,99,100,101,102,103,104,
            105,106,107,108,109,110,111,112,60,72,
            120,54,117,118,119,0,92,93,3,72,
            5,64,7,70,9,0,1,2,3,4,
            97,6,60,8,97,0,1,2,3,4,
            5,96,7,0,97,0,89,90,0,34,
            35,36,37,5,39,7,0,22,23,24,
            25,26,27,28,29,30,31,32,33,54,
            0,1,2,3,4,60,6,0,8,64,
            97,4,5,68,7,70,71,72,73,0,
            0,0,0,1,2,60,71,54,6,64,
            8,86,87,68,89,90,91,92,93,94,
            95,96,97,98,99,100,101,102,103,104,
            105,106,107,108,109,110,111,112,0,0,
            60,0,117,118,119,0,1,2,3,4,
            5,6,7,8,9,10,11,12,13,14,
            15,16,17,18,19,20,21,22,23,24,
            25,26,27,28,29,30,31,32,33,0,
            1,2,3,4,39,6,41,8,0,1,
            2,91,4,5,55,7,95,0,98,0,
            55,56,57,58,0,64,61,62,63,68,
            65,0,1,2,0,4,0,3,73,22,
            23,24,25,26,27,28,29,30,31,32,
            33,0,0,88,0,1,2,3,4,5,
            6,7,8,9,10,11,12,13,14,15,
            16,17,18,19,20,21,22,23,24,25,
            26,27,28,29,30,31,32,33,64,70,
            0,1,2,39,4,41,6,0,8,0,
            1,2,0,4,70,6,70,8,54,55,
            56,57,58,0,0,61,62,63,0,65,
            101,102,103,104,105,106,107,108,109,110,
            111,112,0,1,2,3,4,5,6,7,
            8,0,88,0,1,2,3,4,5,6,
            7,8,9,10,11,12,13,14,15,16,
            17,18,19,20,21,22,23,24,25,26,
            27,28,29,30,31,32,33,0,1,2,
            0,68,39,6,41,8,0,7,70,0,
            1,2,60,4,5,54,7,0,55,56,
            57,58,70,0,61,62,63,4,65,0,
            1,2,3,4,0,6,73,8,9,101,
            102,103,104,105,106,107,108,109,110,111,
            112,88,0,1,2,3,4,5,6,7,
            8,9,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,24,25,26,27,
            28,29,30,31,32,33,0,70,54,60,
            0,39,0,41,0,0,1,2,4,4,
            5,72,7,0,0,0,0,55,56,57,
            58,0,9,61,62,63,22,65,7,0,
            34,35,0,89,90,73,22,23,24,25,
            26,27,28,29,30,31,32,33,0,0,
            88,0,1,2,3,4,5,6,7,8,
            9,10,11,12,13,14,15,16,17,18,
            19,20,21,22,23,24,25,26,27,28,
            29,30,31,32,33,72,54,0,1,2,
            39,4,41,0,1,2,64,4,5,70,
            7,0,54,0,0,0,55,56,57,58,
            0,96,61,62,63,10,65,0,114,115,
            116,89,90,0,73,22,23,24,25,26,
            27,28,29,30,31,32,33,89,90,88,
            0,1,2,3,4,5,6,7,8,9,
            10,11,12,13,14,15,16,17,18,19,
            20,21,22,23,24,25,26,27,28,29,
            30,31,32,33,0,1,2,60,0,39,
            6,41,4,60,0,0,1,2,3,4,
            0,6,91,8,9,55,56,57,58,98,
            22,61,62,63,0,65,22,23,24,25,
            26,27,28,29,30,31,32,33,114,115,
            116,0,1,2,39,0,0,0,88,0,
            1,2,3,4,5,6,7,8,9,10,
            11,12,13,14,15,16,17,18,19,20,
            21,22,23,24,25,26,27,28,29,30,
            31,32,33,0,1,2,0,41,39,3,
            41,0,68,0,0,1,2,3,4,0,
            6,91,8,9,55,56,57,58,98,64,
            61,62,63,68,65,22,23,24,25,26,
            27,28,29,30,31,32,33,0,1,2,
            3,4,5,39,7,0,0,88,0,1,
            2,3,4,5,6,7,8,9,10,11,
            12,13,14,15,16,17,18,19,20,21,
            22,23,24,25,26,27,28,29,30,31,
            32,33,0,1,2,0,4,39,6,41,
            8,0,0,1,2,0,4,60,6,0,
            8,0,7,55,56,57,58,0,9,61,
            62,63,0,65,0,1,2,3,4,5,
            6,7,8,0,10,11,12,13,14,15,
            16,17,18,19,20,21,88,55,0,1,
            2,0,1,2,0,1,2,55,34,35,
            36,37,38,9,40,54,42,43,44,45,
            46,47,48,49,50,51,52,53,0,1,
            2,72,71,59,6,0,0,0,64,3,
            66,67,0,1,2,3,4,5,6,7,
            8,9,10,11,12,13,14,15,16,17,
            18,19,20,21,66,67,0,66,67,3,
            0,1,2,69,91,5,34,35,36,37,
            38,98,40,55,42,43,44,45,46,47,
            48,49,50,51,52,53,60,60,0,64,
            64,59,0,0,68,0,3,9,0,0,
            0,69,10,5,9,73,0,1,2,3,
            4,5,6,7,8,55,10,11,12,13,
            14,15,16,17,18,19,20,21,0,1,
            2,0,0,41,39,0,0,5,3,0,
            34,35,36,37,38,0,40,55,42,43,
            44,45,46,47,48,49,50,51,52,53,
            0,1,2,68,64,59,0,1,2,0,
            1,2,66,67,0,1,2,3,4,5,
            6,7,8,55,10,11,12,13,14,15,
            16,17,18,19,20,21,0,99,100,54,
            64,0,71,64,0,9,118,0,34,35,
            36,37,38,9,40,55,42,43,44,45,
            46,47,48,49,50,51,52,53,0,1,
            2,99,100,59,89,90,0,0,0,0,
            66,67,0,1,2,3,4,5,6,7,
            8,9,10,11,12,13,14,15,16,17,
            18,19,20,21,68,0,0,0,72,68,
            3,64,0,69,9,9,34,35,36,37,
            38,9,40,55,42,43,44,45,46,47,
            48,49,50,51,52,53,0,1,2,0,
            0,59,64,4,0,0,0,71,3,9,
            71,69,0,1,2,3,4,5,6,7,
            8,9,10,11,12,13,14,15,16,17,
            18,19,20,21,68,0,0,0,73,73,
            3,69,38,0,9,9,34,35,36,37,
            38,55,40,54,42,43,44,45,46,47,
            48,49,50,51,52,53,0,1,2,0,
            0,59,0,73,39,39,70,0,9,9,
            3,69,0,1,2,3,4,5,6,7,
            8,9,10,11,12,13,14,15,16,17,
            18,19,20,21,0,0,0,64,3,39,
            0,0,0,3,0,9,34,35,36,37,
            38,55,40,9,42,43,44,45,46,47,
            48,49,50,51,52,53,0,0,0,0,
            3,72,5,6,7,0,74,11,12,13,
            14,15,16,17,18,19,20,21,22,23,
            24,25,26,27,28,29,30,31,32,33,
            60,34,35,36,37,71,38,40,72,0,
            0,0,3,71,3,0,0,73,9,0,
            10,54,86,87,55,0,0,60,0,10,
            118,64,4,66,67,68,0,70,22,23,
            24,25,26,27,28,29,30,31,32,33,
            75,41,0,86,87,0,89,90,91,92,
            93,94,95,96,9,55,99,100,101,60,
            103,104,105,106,107,108,109,110,111,112,
            61,72,54,68,117,0,1,2,3,4,
            5,6,7,8,39,10,11,12,13,14,
            15,16,17,18,19,20,21,0,1,2,
            0,0,60,3,3,0,0,0,0,34,
            35,36,37,38,0,40,0,42,43,44,
            45,46,47,48,49,50,51,52,53,22,
            23,24,25,26,27,28,29,30,31,32,
            33,66,67,0,1,2,3,4,5,6,
            7,8,55,10,11,12,13,14,15,16,
            17,18,19,20,21,60,0,59,54,3,
            54,0,0,1,2,0,0,34,35,36,
            37,38,0,40,0,42,43,44,45,46,
            47,48,49,50,51,52,53,0,0,0,
            3,3,59,0,1,2,3,4,5,6,
            7,8,0,10,11,12,13,14,15,16,
            17,18,19,20,21,54,0,55,0,54,
            54,3,0,0,0,64,54,34,35,36,
            37,38,10,40,0,42,43,44,45,46,
            47,48,49,50,51,52,53,0,0,0,
            89,90,0,60,0,1,2,3,4,5,
            6,7,8,41,10,11,12,13,14,15,
            16,17,18,19,20,21,0,55,54,3,
            0,0,0,0,62,0,0,4,34,35,
            36,37,38,0,40,121,42,43,44,45,
            46,47,48,49,50,51,52,53,0,0,
            0,3,0,59,0,1,2,3,4,5,
            6,7,8,71,10,11,12,13,14,15,
            16,17,18,19,20,21,54,54,0,54,
            54,0,0,0,0,0,64,54,34,35,
            36,37,38,0,40,0,42,43,44,45,
            46,47,48,49,50,51,52,53,0,0,
            0,89,90,59,0,1,2,3,4,5,
            6,7,8,71,10,11,12,13,14,15,
            16,17,18,19,20,21,54,54,54,0,
            0,0,0,0,0,3,68,97,34,35,
            36,37,38,0,40,70,42,43,44,45,
            46,47,48,49,50,51,52,53,0,0,
            0,3,3,59,0,1,2,3,4,5,
            6,7,8,0,10,11,12,13,14,15,
            16,17,18,19,20,21,0,0,0,0,
            0,3,0,0,0,0,9,54,34,35,
            36,37,38,70,40,71,42,43,44,45,
            46,47,48,49,50,51,52,53,0,1,
            2,3,4,5,6,7,8,0,10,11,
            12,13,14,15,16,17,18,19,20,21,
            0,0,113,113,71,0,0,0,0,0,
            9,0,34,35,36,37,38,0,40,72,
            42,43,44,45,46,47,48,49,50,51,
            52,53,0,1,2,3,4,5,6,7,
            8,0,10,11,12,13,14,15,16,17,
            18,19,20,21,0,38,0,70,0,113,
            0,0,113,0,0,0,34,35,36,37,
            38,0,40,72,42,43,44,45,46,47,
            48,49,50,51,52,53,0,1,2,3,
            4,5,6,7,8,0,10,11,12,13,
            14,15,16,17,18,19,20,21,0,0,
            0,70,0,0,0,0,0,0,0,0,
            34,35,36,37,38,0,40,0,42,43,
            44,45,46,47,48,49,50,51,52,53,
            0,1,2,3,4,5,6,7,8,0,
            10,11,12,13,14,15,16,17,18,19,
            20,21,0,0,0,0,0,0,0,0,
            0,0,0,0,34,35,36,37,38,0,
            40,0,42,43,44,45,46,47,48,49,
            50,51,52,53,0,1,2,0,4,0,
            0,0,0,0,10,11,12,13,14,15,
            16,17,18,19,20,21,22,23,24,25,
            26,27,28,29,30,31,32,33,0,0,
            0,0,0,0,0,41,0,0,0,0,
            0,0,0,0,1,2,0,4,0,0,
            56,57,58,10,11,12,13,14,15,16,
            17,18,19,20,21,22,23,24,25,26,
            27,28,29,30,31,32,33,0,0,0,
            0,0,0,0,41,0,0,0,0,0,
            0,0,0,1,2,0,0,0,0,56,
            57,58,10,11,12,13,14,15,16,17,
            18,19,20,21,22,23,24,25,26,27,
            28,29,30,31,32,33,0,0,0,0,
            0,0,0,41,0,0,0,0,0,0,
            0,0,1,2,0,0,0,3,56,57,
            58,10,11,12,13,14,15,16,17,18,
            19,20,21,22,23,24,25,26,27,28,
            29,30,31,32,33,0,0,0,0,0,
            36,37,41,0,1,2,3,4,5,6,
            7,8,9,0,0,0,0,56,57,58,
            0,0,0,0,60,22,23,24,25,26,
            27,28,29,30,31,32,33,0,0,0,
            0,0,39,22,23,24,25,26,27,28,
            29,30,31,32,33,0,0,54,0,0,
            0,0,0,60,0,1,2,3,4,5,
            6,7,8,9,0,72,0,0,0,0,
            0,117,0,119,0,0,22,23,24,25,
            26,27,28,29,30,31,32,33,0,0,
            0,0,0,39,0,0,0,0,0,0,
            0,0,0,0,0,0,1,2,3,4,
            5,0,7,0,60,0,0,0,0,0,
            0,0,0,0,0,0,72,22,23,24,
            25,26,27,28,29,30,31,32,33,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,60,0,0,0,64,
            0,0,0,68,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0
        };
    };
    public final static byte termCheck[] = TermCheck.termCheck;
    @Override
    public final int termCheck(int index) { return termCheck[index]; }

    public interface TermAction {
        public final static char termAction[] = {0,
            6984,6946,6922,6922,6922,6922,6922,6922,6922,6962,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,6950,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,121,135,1,1,1,1,
            39,2562,7192,1558,7022,3487,1,1,1,6995,
            434,6998,6999,6991,2498,3580,3434,3319,3376,3569,
            4713,3579,729,3578,3915,3577,10,6965,6965,6965,
            6965,6965,6965,6965,6965,6965,6965,6965,6965,6965,
            6965,6965,6965,6965,6965,6965,6965,6965,6965,6965,
            6965,6965,6965,6965,6965,6965,6965,6965,6965,6965,
            6965,6965,6965,6965,6965,6965,6965,6965,6965,6965,
            6965,6965,6965,6965,6965,6965,6965,6965,6965,6965,
            4307,4395,6965,6965,6965,6965,133,6965,6965,6965,
            3501,6965,6965,6965,367,6965,6984,6998,6999,6965,
            6965,6965,6965,6965,6965,6965,6965,6965,6965,6965,
            6965,6965,8,6968,6968,6968,6968,6968,6968,6968,
            6968,6968,6968,6968,6968,6968,6968,6968,6968,6968,
            6968,6968,6968,6968,6968,6968,6968,6968,6968,6968,
            6968,6968,6968,6968,6968,6968,6968,6968,6968,6968,
            6968,6968,6968,6968,6968,6968,6968,6968,6968,6968,
            6968,6968,6968,6968,6968,6968,137,432,6968,6968,
            6968,6968,134,6968,6968,6968,129,6968,6968,6968,
            3593,6968,6984,6583,6580,6968,6968,6968,6968,6968,
            6968,6968,6968,6968,6968,6968,6968,6968,6984,6946,
            6922,6922,6922,6922,6922,6922,6922,6953,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,6950,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,125,139,1,1,1,1,153,2562,
            7192,1558,1324,3487,1,1,3593,6995,3790,3758,
            124,333,2498,3580,3434,3319,3376,3569,4713,3579,
            729,3578,3915,3577,6984,6946,6922,6922,6922,6922,
            6922,6922,6922,6953,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,6950,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,4307,4395,
            1,1,1,1,6984,2562,7192,1558,2663,3487,
            1,1,3628,6995,1080,4229,4307,4395,2498,3580,
            3434,3319,3376,3569,4713,3579,729,3578,3915,3577,
            6984,6946,6922,6922,6922,6922,6922,6922,6922,6953,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,6950,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,123,136,1,1,1,1,
            432,2562,7192,1558,425,3487,1,1,6984,6995,
            48,6583,6580,1755,2498,3580,3434,3319,3376,3569,
            4713,3579,729,3578,3915,3577,6984,6946,6922,6922,
            6922,6922,6922,6922,6922,6953,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,6950,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            4307,4395,1,1,1,1,154,2562,7192,1558,
            3501,3487,1,1,421,6995,122,545,141,6984,
            2498,3580,3434,3319,3376,3569,4713,3579,729,3578,
            3915,3577,6984,6946,6922,6922,6922,6922,6922,6922,
            6922,6953,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,6950,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,145,1200,1,1,
            1,1,6984,2562,7192,1558,130,3487,1,1,
            3628,6995,4307,4395,4307,4395,2498,3580,3434,3319,
            3376,3569,4713,3579,729,3578,3915,3577,6984,6946,
            6922,6922,6922,6922,6922,6922,6922,6953,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,6950,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,4307,4395,1,1,1,1,6984,2562,
            7192,1558,149,3487,1,1,6984,6995,3790,3758,
            144,398,2498,3580,3434,3319,3376,3569,4713,3579,
            729,3578,3915,3577,6984,6946,6922,6922,6922,6922,
            6922,6922,6922,6953,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,6950,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,142,3472,
            1,1,1,1,6984,2562,7192,1558,2994,3487,
            1,1,6984,6995,3862,3822,4307,4395,2498,3580,
            3434,3319,3376,3569,4713,3579,729,3578,3915,3577,
            6984,6946,6922,6922,6922,6922,6922,6922,6922,6953,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,6950,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,4307,4395,1,1,1,1,
            6984,2562,7192,1558,155,3487,1,1,6984,6995,
            333,6998,6999,190,2498,3580,3434,3319,3376,3569,
            4713,3579,729,3578,3915,3577,6984,6946,6922,6922,
            6922,6922,6922,6922,6922,6953,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,6950,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            138,2146,1,1,1,1,6984,2562,7192,1558,
            1524,3487,1,1,6984,6995,327,6998,6999,3537,
            2498,3580,3434,3319,3376,3569,4713,3579,729,3578,
            3915,3577,6984,3573,1,1,1,1,1,1,
            1,3574,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,6993,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,6984,6984,1,1,
            1,1,2000,2562,7192,1558,1324,3487,1,1,
            6984,6995,37,6705,6705,552,2498,3580,3434,3319,
            3376,3569,4713,3579,729,3578,3915,3577,39,6565,
            6562,5188,799,5532,5416,5561,2284,6984,1216,7283,
            7281,7290,7289,7285,7286,7284,7287,7288,7291,7282,
            7278,7357,7358,7272,7279,7275,7251,7277,7276,7273,
            7274,7252,5509,5442,5608,5585,7003,7020,5385,7419,
            1163,1282,7005,1178,5746,1203,7006,7004,1119,7000,
            7001,7002,6984,996,954,7420,7421,1565,6984,6772,
            6772,263,6768,263,263,263,263,6776,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,323,6604,6604,6984,318,263,118,1,
            6984,6555,6551,2469,6559,6902,814,6902,2284,6984,
            384,372,115,6765,1,1,1,5346,6984,968,
            7433,642,1,6555,6551,2469,6559,6544,814,263,
            2284,453,4688,4612,7357,7358,257,345,6555,6551,
            2469,6559,6902,814,6902,2284,7521,7283,7281,7290,
            7289,7285,7286,7284,7287,7288,7291,7282,7278,7357,
            7358,7272,7279,7275,7251,7277,7276,7273,7274,7252,
            1519,3079,7456,7457,7458,6984,6772,6772,263,6768,
            263,263,263,263,6884,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,6984,
            1,5322,5298,4435,263,33,1,47,6693,377,
            6693,120,6693,6984,6693,431,6601,6601,131,318,
            6765,1,1,1,6984,3676,968,7433,642,367,
            6565,6562,2469,799,150,814,263,2284,452,6693,
            6693,6693,6693,394,6693,4688,4612,1,6711,6711,
            6984,6708,367,7521,367,157,399,1,383,6693,
            1519,960,1414,543,377,6693,399,126,377,6693,
            318,6984,377,6693,6261,6693,6693,6693,6693,7456,
            7457,7458,381,6565,6562,3889,799,367,814,367,
            2284,6693,6693,1,6693,6693,6693,6693,6693,6693,
            6693,6693,6693,6693,6693,6693,6693,6693,6693,6693,
            6693,6693,6693,6693,6693,6693,6693,6693,1519,399,
            377,4079,6693,6693,6693,6984,3862,3822,6717,399,
            6717,6690,6717,2416,6717,1,6555,6551,2469,6559,
            7377,814,1519,2284,399,37,6999,6999,6999,6999,
            6999,3445,6999,6984,399,6984,4020,3993,6984,6717,
            6717,6717,6717,1706,6717,1659,6984,6999,6999,6999,
            6999,6999,6999,6999,6999,6999,6999,6999,6999,6717,
            1,6555,6551,3889,6559,6717,814,39,2284,6717,
            7379,7022,367,6717,367,6717,6717,6717,6717,6984,
            111,156,38,6592,6589,6999,3079,751,6586,6999,
            2284,6717,6717,6999,6717,6717,6717,6717,6717,6717,
            6717,6717,6717,6717,6717,6717,6717,6717,6717,6717,
            6717,6717,6717,6717,6717,6717,6717,6717,6984,37,
            1519,6984,6717,6717,6717,6984,6922,6922,263,6922,
            263,263,263,263,6931,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,10901,1,1,1,1,1,1,1,
            6555,6551,6878,6559,263,6881,1,6824,481,1,
            1,5654,1,6696,7020,6696,3537,258,5677,139,
            6919,1,1,1,6984,668,2290,7229,1558,4850,
            3487,6984,6565,6562,347,7022,406,2334,254,7278,
            7357,7358,7272,7279,7275,7251,7277,7276,7273,7274,
            7252,6984,6984,7521,6984,6922,6922,263,6922,263,
            263,263,263,263,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,10901,1,1,1,1,1,1,3265,2099,
            6984,6565,6562,263,799,1,814,6984,2284,6984,
            6565,6562,6984,799,1222,814,1372,2284,3314,6919,
            1,1,1,320,6984,2290,7229,1558,159,3487,
            1080,4229,2052,2005,1958,1911,1864,1817,1770,1723,
            1676,1629,403,6555,6551,3889,6559,1,814,1,
            2284,29,7521,6984,6922,6922,263,6922,263,263,
            263,263,6937,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            10901,1,1,1,1,1,1,6984,6998,6999,
            132,7303,263,814,1,2284,6984,3676,2900,482,
            39,39,1519,7022,6869,6571,6869,404,6919,1,
            1,1,1277,6984,2290,7229,1558,1666,3487,1,
            6555,6551,3889,6559,146,814,253,2284,6595,3382,
            4275,2834,2768,2702,2636,2570,2504,2438,2372,2306,
            2240,7521,6984,6922,6922,263,6922,263,263,263,
            263,6931,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,10901,
            1,1,1,1,1,1,119,1424,4160,1519,
            6984,263,6984,1,39,92,1,1,7022,1,
            6887,6598,6887,6984,259,158,6984,6919,1,1,
            1,151,6990,2290,7229,1558,2350,3487,3710,547,
            4688,4612,128,4133,4106,254,7278,7357,7358,7272,
            7279,7275,7251,7277,7276,7273,7274,7252,148,6984,
            7521,6984,6922,6922,263,6922,263,263,263,263,
            6931,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,10901,1,
            1,1,1,1,1,6989,4079,6984,6565,6562,
            263,7022,1,95,39,39,6794,7022,6925,1027,
            6925,114,4160,260,476,337,6919,1,1,1,
            6984,3445,2290,7229,1558,7320,3487,356,7456,7457,
            7458,4020,3993,495,254,7278,7357,7358,7272,7279,
            7275,7251,7277,7276,7273,7274,7252,4133,4106,7521,
            6984,6922,6922,263,6922,263,263,263,263,263,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,10901,1,1,
            1,1,1,1,6984,6998,6999,1519,39,263,
            2000,1,7022,6699,261,1,6555,6551,6878,6559,
            113,6881,5654,6824,6994,6919,1,1,1,5677,
            3022,2290,7229,1558,326,3487,7278,7357,7358,7272,
            7279,7275,7251,7277,7276,7273,7274,7252,7456,7457,
            7458,36,6916,6913,6993,6984,6984,6984,7521,6984,
            6922,6922,263,6922,263,263,263,263,263,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,10901,1,1,1,
            1,1,1,6984,10657,10382,6984,957,263,4425,
            1,6984,10053,572,1,6555,6551,2469,6559,6984,
            814,5654,2284,345,6919,1,1,1,5677,6121,
            2290,7229,1558,4850,3487,7278,7357,7358,7272,7279,
            7275,7251,7277,7276,7273,7274,7252,381,39,39,
            4435,7022,367,345,367,6984,6984,7521,6984,6922,
            6922,263,6922,263,263,263,263,263,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,10901,1,1,1,1,
            1,1,6984,6565,6562,6984,799,263,6720,1,
            2284,6984,6984,6565,6562,152,799,1519,6720,1,
            2284,29,3710,6919,1,1,1,6984,194,2290,
            7229,1558,6984,3487,1,6555,6551,672,799,5532,
            5416,5561,2284,112,6723,6750,6756,6729,6732,6744,
            6741,6747,6738,6735,6726,6753,7521,1062,6984,6998,
            6999,6984,6583,6580,6984,6998,6999,2798,5509,5442,
            5608,5585,7003,6996,5385,1309,1163,1282,7005,1178,
            5746,1203,7006,7004,1119,7000,7001,7002,37,6705,
            6705,194,461,1565,6705,6984,1,494,553,4435,
            39,39,39,6565,6562,5188,799,5532,5416,5561,
            2284,6978,1117,7283,7281,7290,7289,7285,7286,7284,
            7287,7288,7291,7282,5631,794,91,5631,794,6714,
            37,6705,6705,6995,5654,367,5509,5442,5608,5585,
            7003,5677,5385,2047,1163,1282,7005,1178,5746,1203,
            7006,7004,1119,7000,7001,7002,1519,6702,6984,3272,
            577,1565,1,271,577,6984,6785,6988,117,6984,
            6984,6959,6545,5346,6994,6991,174,6565,6562,5188,
            799,5532,5416,5561,2284,7020,1117,7283,7281,7290,
            7289,7285,7286,7284,7287,7288,7291,7282,43,6762,
            6762,6984,116,6548,6993,1,6984,5346,6383,6984,
            5509,5442,5608,5585,7003,147,5385,628,1163,1282,
            7005,1178,5746,1203,7006,7004,1119,7000,7001,7002,
            6984,6782,6779,4378,3273,1565,6984,10657,10382,326,
            833,833,39,39,1,6555,6551,672,799,5532,
            5416,5561,2284,6759,6723,6750,6756,6729,6732,6744,
            6741,6747,6738,6735,6726,6753,6984,5322,5298,4160,
            3306,463,2193,7533,6984,6990,6987,6984,5509,5442,
            5608,5585,7003,6996,5385,7020,1163,1282,7005,1178,
            5746,1203,7006,7004,1119,7000,7001,7002,6984,10787,
            10787,5322,5298,1565,4133,4106,6984,6984,6984,465,
            39,39,39,6565,6562,5188,799,5532,5416,5561,
            2284,6956,1117,7283,7281,7290,7289,7285,7286,7284,
            7287,7288,7291,7282,6390,6984,6984,6984,6989,2614,
            4429,7462,1,6995,6992,6992,5509,5442,5608,5585,
            7003,6940,5385,7020,1163,1282,7005,1178,5746,1203,
            7006,7004,1119,7000,7001,7002,37,6705,6705,433,
            1,1565,7476,424,6984,6984,328,7422,4431,6943,
            1499,6959,39,6565,6562,5188,799,5532,5416,5561,
            2284,6956,1117,7283,7281,7290,7289,7285,7286,7284,
            7287,7288,7291,7282,1173,442,6984,6984,6991,6991,
            4490,6995,1896,6984,6872,6994,5509,5442,5608,5585,
            7003,1953,5385,1309,1163,1282,7005,1178,5746,1203,
            7006,7004,1119,7000,7001,7002,45,6899,6899,1,
            1,1565,1,6991,6875,6993,3121,6984,6990,6994,
            4523,6959,39,6565,6562,5188,799,5532,5416,5561,
            2284,6988,1117,7283,7281,7290,7289,7285,7286,7284,
            7287,7288,7291,7282,6984,6984,6984,5970,1153,6993,
            354,6984,485,6568,8,6990,5509,5442,5608,5585,
            7003,6896,5385,6981,1163,1282,7005,1178,5746,1203,
            7006,7004,1119,7000,7001,7002,571,1,6984,6984,
            2509,6989,7484,7490,7488,227,3160,7283,7281,7290,
            7289,7285,7286,7284,7287,7288,7291,7282,7278,7357,
            7358,7272,7279,7275,7251,7277,7276,7273,7274,7252,
            1519,7482,7483,7513,7514,2966,3934,7491,6989,1,
            1,6984,4435,701,4934,486,573,6981,6595,337,
            6545,7493,4307,4395,3316,6984,6984,1156,48,7320,
            6987,7494,6999,2089,2127,7515,6984,7492,7278,7357,
            7358,7272,7279,7275,7251,7277,7276,7273,7274,7252,
            6972,6548,100,7504,7503,1,7509,7510,7516,7507,
            7508,7487,7489,7511,224,628,7485,7486,7512,1519,
            7497,7498,7499,7495,7496,7505,7506,7501,7500,7502,
            3014,6598,6999,2486,7517,1,6555,6551,6866,6559,
            6812,6827,6815,6824,224,6723,6750,6756,6729,6732,
            6744,6741,6747,6738,6735,6726,6753,6984,6909,6905,
            6984,103,4782,4969,5031,99,6984,574,595,6809,
            6806,6821,6818,6839,477,6803,491,6854,6863,6833,
            6857,6800,6860,6830,6836,6851,6848,6845,6842,7278,
            7357,7358,7272,7279,7275,7251,7277,7276,7273,7274,
            7252,6711,6711,39,6565,6562,5188,799,5532,5416,
            5561,2284,7020,1117,7283,7281,7290,7289,7285,7286,
            7284,7287,7288,7291,7282,3277,6984,3496,6574,3497,
            6577,127,6984,11379,9059,424,6984,5509,5442,5608,
            5585,7003,6984,5385,218,1163,1282,7005,1178,5746,
            1203,7006,7004,1119,7000,7001,7002,313,6984,6984,
            6934,6326,1565,39,6565,6562,5188,799,5532,5416,
            5561,2284,6984,1117,7283,7281,7290,7289,7285,7286,
            7284,7287,7288,7291,7282,4079,6984,7020,6984,6687,
            2878,5058,6984,6984,6984,6797,2944,5509,5442,5608,
            5585,7003,758,5385,6984,1163,1282,7005,1178,5746,
            1203,7006,7004,1119,7000,7001,7002,6984,6984,6984,
            4020,3993,6984,1501,39,6565,6562,672,799,5532,
            5416,5561,2284,919,1117,7283,7281,7290,7289,7285,
            7286,7284,7287,7288,7291,7282,6984,628,6335,6345,
            6984,6984,6984,48,7583,6984,6984,6998,5509,5442,
            5608,5585,7003,6984,5385,6975,1163,1282,7005,1178,
            5746,1203,7006,7004,1119,7000,7001,7002,6984,6984,
            1,6352,6984,1565,39,6565,6562,672,799,5532,
            5416,5561,2284,3178,1117,7283,7281,7290,7289,7285,
            7286,7284,7287,7288,7291,7282,4160,6998,344,6364,
            1309,6984,432,6984,73,457,4200,3314,5509,5442,
            5608,5585,7003,6984,5385,6984,1163,1282,7005,1178,
            5746,1203,7006,7004,1119,7000,7001,7002,6984,6984,
            6984,4133,4106,1565,39,6565,6562,5188,799,5532,
            5416,5561,2284,4775,1117,7283,7281,7290,7289,7285,
            7286,7284,7287,7288,7291,7282,1309,3153,6928,6984,
            411,6984,6984,35,6984,4263,2271,4364,5509,5442,
            5608,5585,7003,2,5385,3220,1163,1282,7005,1178,
            5746,1203,7006,7004,1119,7000,7001,7002,6984,6984,
            6984,6371,3571,1565,39,6565,6562,6291,799,5532,
            5416,5561,2284,6984,1117,7283,7281,7290,7289,7285,
            7286,7284,7287,7288,7291,7282,584,1,6984,583,
            6984,4940,6984,6984,6984,6984,591,37,5509,5442,
            5608,5585,7003,3170,5385,4837,1163,1282,7005,1178,
            5746,1203,7006,7004,1119,7000,7001,7002,39,6565,
            6562,5188,799,5532,5416,5561,2284,6984,1117,7283,
            7281,7290,7289,7285,7286,7284,7287,7288,7291,7282,
            6984,1,3585,3585,4899,6984,6984,6984,6984,6984,
            196,6984,5509,5442,5608,5585,7003,1,5385,591,
            1163,1282,7005,1178,5746,1203,7006,7004,1119,7000,
            7001,7002,39,6565,6562,672,799,5532,5416,5561,
            2284,6984,1117,7283,7281,7290,7289,7285,7286,7284,
            7287,7288,7291,7282,6984,3486,6984,3170,6984,1,
            6984,6984,3585,6984,6984,6984,5509,5442,5608,5585,
            7003,6984,5385,196,1163,1282,7005,1178,5746,1203,
            7006,7004,1119,7000,7001,7002,39,6565,6562,672,
            799,5532,5416,5561,2284,6984,1117,7283,7281,7290,
            7289,7285,7286,7284,7287,7288,7291,7282,6984,6984,
            6984,3032,6984,6984,6984,6984,6984,6984,6984,6984,
            5509,5442,5608,5585,7003,6984,5385,6984,1163,1282,
            7005,1178,5746,1203,7006,7004,1119,7000,7001,7002,
            39,6565,6562,5188,799,5532,5416,5561,2284,6984,
            1117,7283,7281,7290,7289,7285,7286,7284,7287,7288,
            7291,7282,6984,6984,6984,6984,6984,6984,6984,6984,
            6984,6984,6984,6984,5509,5442,5608,5585,7003,6984,
            5385,6984,1163,1282,7005,1178,5746,1203,7006,7004,
            1119,7000,7001,7002,6984,6565,6562,6984,7022,6984,
            6984,6984,6984,6984,1046,7283,7281,7290,7289,7285,
            7286,7284,7287,7288,7291,7282,7278,7357,7358,7272,
            7279,7275,7251,7277,7276,7273,7274,7252,6984,6984,
            6984,6984,6984,6984,6984,7419,6984,6984,6984,6984,
            6984,6984,6984,275,6680,6676,6984,6684,6984,6984,
            954,7420,7421,1046,6667,6673,6646,6649,6661,6658,
            6664,6655,6652,6643,6670,6622,6616,6613,6640,6619,
            6631,6610,6625,6628,6637,6634,6607,6984,6984,6984,
            6984,6984,6984,6984,7419,6984,6984,6984,6984,6984,
            6984,6984,6984,6998,6999,6984,6984,6984,6984,954,
            7420,7421,1352,7283,7281,7290,7289,7285,7286,7284,
            7287,7288,7291,7282,7278,7357,7358,7272,7279,7275,
            7251,7277,7276,7273,7274,7252,6984,6984,6984,6984,
            6984,6984,6984,7419,6984,6984,6984,6984,6984,6984,
            6984,275,6893,6890,75,6984,6984,4496,954,7420,
            7421,1352,6667,6673,6646,6649,6661,6658,6664,6655,
            6652,6643,6670,6622,6616,6613,6640,6619,6631,6610,
            6625,6628,6637,6634,6607,6984,6984,6984,6984,6984,
            7046,7047,7419,29,424,424,6791,424,6791,424,
            6791,424,6791,6984,6984,6984,6984,954,7420,7421,
            6984,575,6984,6984,3931,424,424,424,424,424,
            424,424,424,424,424,424,424,6984,6984,6984,
            6984,6984,6791,7278,7357,7358,7272,7279,7275,7251,
            7277,7276,7273,7274,7252,6984,6984,6571,6984,6984,
            6984,6984,6984,6791,32,425,425,6788,425,6788,
            425,6788,425,6788,6984,6791,6984,6984,6984,6984,
            6984,866,6984,2733,6984,6984,425,425,425,425,
            425,425,425,425,425,425,425,425,6984,6984,
            6984,6984,6984,6788,6984,6984,6984,6984,6984,6984,
            6984,6984,6984,6984,6984,37,6998,6998,6998,6998,
            6998,6984,6998,6984,6788,6984,6984,6984,6984,6984,
            6984,6984,6984,6984,6984,6984,6788,6998,6998,6998,
            6998,6998,6998,6998,6998,6998,6998,6998,6998,6984,
            6984,6984,6984,6984,6984,6984,6984,6984,6984,6984,
            6984,6984,6984,6984,6984,6984,6984,6984,6984,6984,
            6984,6984,6984,6984,6984,6998,6984,6984,6984,6998,
            6984,6984,6984,6998
        };
    };
    public final static char termAction[] = TermAction.termAction;
    @Override
    public final int termAction(int index) { return termAction[index]; }

    public interface Asb {
        public final static char asb[] = {0,
            58,20,522,32,32,229,376,376,229,135,
            135,1037,809,135,9,165,229,471,818,818,
            270,22,23,39,39,510,662,662,524,662,
            510,101,825,590,962,973,608,973,1,973,
            52,973,957,973,592,510,590,827,32,955,
            522,522,522,522,592,955,455,103,472,472,
            472,472,472,472,472,472,472,665,671,676,
            673,680,678,685,683,687,686,688,313,689,
            471,471,310,703,831,831,522,662,108,108,
            659,310,912,662,662,108,510,594,1092,912,
            912,829,809,510,361,213,3,753,4,592,
            510,510,1094,9,829,376,455,135,135,135,
            135,510,871,912,912,455,915,134,1092,455,
            665,751,751,871,471,472,472,472,472,472,
            472,472,472,472,472,472,472,472,472,472,
            472,472,472,472,471,471,471,471,471,471,
            471,471,471,471,471,471,472,831,831,108,
            108,590,310,310,108,1091,508,912,28,820,
            510,362,657,655,213,510,607,513,518,1094,
            608,364,510,1094,510,507,912,912,1038,1038,
            1038,1038,1094,912,471,472,611,618,980,980,
            592,103,310,134,471,912,507,509,507,912,
            310,673,673,671,671,671,678,678,678,678,
            676,676,683,680,680,686,685,687,1050,688,
            912,912,1038,136,586,455,1015,1013,1020,1018,
            1022,1021,1023,1024,1037,1038,659,1038,594,510,
            370,770,1091,362,655,367,510,213,1050,4,
            522,1096,420,1040,213,607,519,607,607,1094,
            364,364,510,510,510,955,955,955,955,510,
            510,471,510,1092,472,135,669,167,912,509,
            1092,471,370,596,563,574,574,574,574,558,
            592,760,472,472,472,472,472,472,472,472,
            472,471,471,471,471,471,471,471,471,471,
            471,471,471,472,455,1091,370,655,655,1092,
            608,608,1038,522,507,606,1042,504,955,607,
            607,607,607,510,364,366,765,366,471,471,
            471,471,955,955,1094,508,912,669,590,594,
            510,508,370,596,510,472,1013,1013,1013,1018,
            1015,1015,1021,1020,1022,1050,1023,372,654,655,
            508,712,608,382,229,508,607,607,504,708,
            472,1050,208,204,590,607,607,262,366,367,
            472,510,912,912,912,912,871,871,510,669,
            670,669,471,167,425,665,594,372,598,1094,
            866,471,372,655,709,712,712,803,1052,353,
            955,4,419,229,508,607,608,592,1042,472,
            472,504,805,257,263,510,367,912,912,629,
            669,871,472,310,425,372,598,510,955,367,
            712,712,381,353,803,48,592,1037,709,608,
            435,805,510,955,262,510,592,592,510,670,
            912,310,832,367,382,712,709,207,708,912,
            592,510,382,758,436,592,510,871,510,510,
            510,821,712,471,64,504,709,510,510,758,
            435,1050,472,1050,709,434,955,955,955,436,
            955,510,320,709,709,510,608,912,510,510,
            135,367,912,367,608,510,709,427,955,427,
            436,1050,436,455,455,453,434,455,709,709,
            211,433,367,64,709,770,436,912,504,912,
            453,353,955,912,758,64,912,912,642,436,
            211,436,709,353,471,436,433,366,608,608,
            947,471,434,871,709,912,707,63,436,912,
            709,707,707,436
        };
    };
    public final static char asb[] = Asb.asb;
    @Override
    public final int asb(int index) { return asb[index]; }

    public interface Asr {
        public final static byte asr[] = {0,
            55,4,71,1,2,69,9,0,9,64,
            68,72,1,2,7,5,4,3,60,120,
            0,3,64,70,68,120,60,9,72,97,
            0,64,70,68,120,1,2,0,74,3,
            64,71,97,68,72,39,60,9,69,70,
            0,4,9,69,1,2,0,41,10,55,
            62,0,73,59,36,37,7,5,34,35,
            40,46,3,4,51,52,53,38,49,44,
            48,12,21,11,17,15,16,18,19,14,
            13,20,10,43,47,45,42,50,69,9,
            8,6,1,2,67,66,0,42,66,43,
            44,67,8,45,46,47,48,59,49,50,
            51,52,53,38,36,37,7,5,34,35,
            6,40,64,3,4,10,1,2,56,57,
            58,12,21,11,17,15,16,18,19,14,
            13,20,25,31,32,27,30,29,22,26,
            23,24,28,33,41,0,98,91,34,35,
            99,100,86,87,64,89,90,92,93,94,
            95,96,101,102,97,103,104,105,106,107,
            108,109,110,111,112,118,72,73,1,2,
            4,7,5,71,60,54,3,9,68,39,
            70,0,88,61,8,114,115,116,63,9,
            3,7,5,6,71,73,39,62,25,11,
            12,41,23,13,56,26,27,14,28,29,
            15,16,30,31,17,18,32,57,55,33,
            10,58,19,20,24,21,1,2,4,22,
            0,22,1,2,4,114,115,116,0,66,
            67,3,10,43,47,45,42,50,12,21,
            11,17,15,16,18,19,14,13,20,51,
            52,53,38,49,44,48,6,8,4,36,
            37,7,5,34,35,40,46,1,2,118,
            9,0,64,71,97,68,118,72,73,11,
            12,42,66,13,43,44,14,15,16,67,
            45,17,18,46,47,48,59,49,50,10,
            19,20,21,51,52,53,38,36,37,34,
            35,40,9,39,6,8,1,2,4,3,
            7,5,0,1,2,68,73,9,0,23,
            24,59,9,97,72,64,68,120,70,0,
            69,41,23,13,56,26,14,28,29,15,
            16,30,31,17,18,32,57,33,58,19,
            22,20,24,21,12,11,25,9,3,7,
            5,39,63,65,88,27,62,55,61,8,
            1,2,4,10,6,0,88,114,115,116,
            55,71,113,121,73,62,74,63,61,65,
            76,78,84,82,75,80,81,83,85,69,
            77,79,39,9,25,41,23,56,26,27,
            28,29,30,31,32,57,33,58,22,24,
            59,66,67,10,43,47,45,42,50,12,
            21,11,17,15,16,18,19,14,13,20,
            51,52,53,38,49,44,48,36,37,34,
            35,40,46,7,5,3,4,8,6,1,
            2,0,4,9,71,69,0,4,9,71,
            69,54,0,67,66,34,35,99,100,94,
            95,6,40,70,54,106,107,103,104,105,
            111,110,112,87,86,108,109,92,93,89,
            90,96,101,36,37,91,117,10,56,41,
            57,58,12,21,11,17,15,16,18,19,
            14,13,20,25,31,32,27,30,29,22,
            26,23,24,28,33,64,68,3,60,7,
            5,1,2,4,0,23,24,59,3,64,
            97,70,68,72,39,74,71,69,9,0,
            9,71,118,72,39,68,0,11,12,13,
            14,15,16,17,18,19,20,21,25,23,
            26,27,28,29,30,31,32,33,22,24,
            39,9,72,8,1,2,60,3,7,5,
            6,4,0,59,23,24,8,6,1,2,
            4,74,69,120,119,117,36,37,60,3,
            98,91,5,99,100,34,35,87,86,54,
            89,90,92,93,7,94,95,96,64,97,
            72,70,103,104,105,106,107,108,109,110,
            111,112,71,118,101,102,73,68,39,9,
            0,65,25,11,12,41,23,13,56,26,
            88,27,14,28,29,15,16,30,61,31,
            17,18,32,57,33,10,58,19,63,22,
            20,24,21,9,3,7,5,73,39,62,
            8,6,55,1,2,4,0,113,0,54,
            64,89,90,0,9,68,73,70,0,25,
            11,12,41,23,13,56,26,27,14,28,
            29,15,16,30,31,17,18,32,57,33,
            10,58,19,22,20,24,21,1,2,4,
            97,0,38,0,9,69,68,0,7,5,
            3,8,6,60,4,1,2,64,70,97,
            72,9,68,0,6,8,3,60,5,7,
            97,25,11,12,41,23,13,56,26,27,
            14,28,29,15,16,30,31,17,18,32,
            57,33,10,58,19,22,20,24,21,1,
            2,4,72,9,0,72,9,87,86,0,
            11,12,42,66,13,43,44,14,15,16,
            67,8,45,17,18,46,47,48,59,49,
            50,10,19,20,21,51,52,53,38,1,
            2,3,36,37,7,5,34,35,6,40,
            4,72,9,0,66,67,36,37,34,35,
            40,46,51,52,53,38,49,44,48,12,
            21,11,17,15,16,18,19,14,13,20,
            10,43,47,45,42,50,7,5,60,8,
            6,4,1,2,3,0,10,56,41,57,
            58,12,21,11,17,15,16,18,19,14,
            13,20,74,71,97,118,73,69,120,8,
            31,32,33,22,24,1,2,30,29,28,
            27,26,6,4,23,25,119,98,117,91,
            36,37,34,35,99,100,9,60,3,5,
            72,39,87,86,54,89,90,92,93,7,
            94,95,96,101,102,70,103,104,105,106,
            107,108,109,110,111,112,68,64,0,39,
            9,3,8,6,7,5,4,1,2,71,
            0,41,23,13,56,26,14,28,29,15,
            16,30,31,17,18,32,57,33,10,58,
            19,22,20,24,21,12,11,25,9,3,
            7,39,63,61,65,88,27,62,54,4,
            5,8,6,1,2,55,0
        };
    };
    public final static byte asr[] = Asr.asr;
    @Override
    public final int asr(int index) { return asr[index]; }

    public interface Nasb {
        public final static char nasb[] = {0,
            77,12,12,43,43,32,12,12,293,297,
            297,12,158,5,201,12,293,85,12,12,
            104,23,23,23,23,242,12,12,122,12,
            180,218,157,176,259,260,210,260,13,260,
            69,260,253,12,10,180,176,200,43,12,
            12,12,12,12,165,12,30,180,85,85,
            238,85,85,85,85,85,85,12,12,12,
            12,12,12,12,12,12,12,12,85,12,
            85,85,109,12,32,32,12,12,32,32,
            79,109,302,12,12,32,11,12,146,302,
            302,290,212,180,12,32,65,165,40,165,
            180,11,12,222,290,12,30,297,297,297,
            297,180,197,302,302,1,85,53,146,30,
            12,55,55,197,31,85,85,85,85,85,
            85,85,85,85,85,85,85,85,85,85,
            85,85,85,85,85,85,85,85,85,85,
            85,85,85,85,85,31,85,293,293,45,
            45,176,109,109,45,148,218,302,12,12,
            180,178,178,178,275,66,63,63,12,228,
            210,32,228,111,66,217,302,302,12,12,
            12,12,145,302,85,85,12,12,12,12,
            10,180,109,297,18,302,217,180,217,302,
            109,12,12,12,12,12,12,12,12,12,
            12,12,12,12,12,12,12,12,12,12,
            302,302,12,231,201,25,12,12,12,12,
            12,12,12,12,12,12,224,12,12,11,
            32,293,126,12,32,153,180,169,12,72,
            12,12,21,262,275,63,63,32,32,111,
            32,243,11,66,180,12,12,12,12,66,
            11,85,180,146,85,297,32,97,302,250,
            146,85,32,32,259,260,260,260,260,282,
            10,12,85,85,85,85,85,85,85,85,
            85,85,85,85,85,85,85,85,85,85,
            85,85,31,85,45,148,61,178,61,146,
            210,130,12,12,165,32,171,160,12,32,
            32,118,118,66,243,120,12,12,31,31,
            31,31,12,12,144,66,302,38,224,12,
            242,66,61,61,180,85,12,12,12,12,
            12,12,12,12,12,12,12,32,61,32,
            218,32,210,270,32,228,32,16,214,169,
            85,12,114,12,176,118,118,100,120,153,
            85,243,302,302,302,302,197,197,66,32,
            93,12,31,224,251,12,12,32,32,111,
            302,85,91,61,169,245,32,12,270,263,
            12,129,21,293,218,16,134,34,160,85,
            85,214,12,165,132,228,153,302,302,12,
            38,197,85,109,251,91,91,66,12,153,
            270,245,209,171,12,12,165,12,169,134,
            152,12,228,12,140,228,165,165,11,93,
            302,109,300,153,270,32,169,95,12,302,
            165,228,270,32,191,34,11,197,11,228,
            228,302,245,18,83,160,169,228,73,155,
            205,12,85,12,169,12,12,12,12,206,
            12,243,167,169,169,243,137,302,11,11,
            297,153,302,32,210,73,169,116,12,12,
            206,12,206,304,304,186,12,304,169,169,
            12,32,153,32,169,297,206,302,160,302,
            296,32,12,302,155,83,302,302,32,206,
            12,206,169,160,31,206,116,153,137,137,
            158,85,12,183,169,302,75,82,206,302,
            169,75,12,206
        };
    };
    public final static char nasb[] = Nasb.nasb;
    @Override
    public final int nasb(int index) { return nasb[index]; }

    public interface Nasr {
        public final static char nasr[] = {0,
            3,13,10,9,138,137,113,136,135,4,
            2,0,166,205,0,173,0,5,28,0,
            170,0,80,0,13,2,9,10,4,52,
            37,5,0,186,4,185,0,161,0,42,
            1,0,121,0,4,10,9,2,13,128,
            5,0,192,0,4,2,9,10,157,0,
            51,0,122,0,44,2,3,0,166,200,
            0,141,117,0,176,0,191,0,5,212,
            0,81,149,42,4,10,9,2,13,0,
            145,0,159,0,201,0,5,194,0,4,
            115,209,0,13,2,9,10,4,94,0,
            2,75,0,208,0,130,0,123,0,167,
            0,5,52,213,0,75,54,0,1,141,
            0,210,0,42,174,0,42,66,0,4,
            115,182,0,2,154,75,0,75,156,155,
            0,5,81,0,175,0,30,101,100,78,
            2,9,10,5,4,0,5,37,39,0,
            5,10,9,2,78,4,98,54,0,44,
            2,0,5,195,0,37,5,27,198,0,
            5,50,42,37,196,0,5,105,0,30,
            100,101,5,0,81,37,50,82,5,42,
            0,101,100,54,78,68,4,10,9,2,
            0,101,100,54,4,68,0,2,67,0,
            138,214,137,113,136,135,0,4,10,9,
            13,3,1,0,133,5,50,93,0,2,
            132,0,2,4,113,110,111,112,13,69,
            0,39,4,2,9,10,5,172,0,5,
            50,93,95,0,5,50,93,115,48,4,
            0,113,69,13,110,111,112,190,0,54,
            4,98,5,27,0,197,5,52,0,52,
            5,30,0,5,52,116,0
        };
    };
    public final static char nasr[] = Nasr.nasr;
    @Override
    public final int nasr(int index) { return nasr[index]; }

    public interface TerminalIndex {
        public final static char terminalIndex[] = {0,
            113,114,2,31,10,13,9,79,115,100,
            48,52,60,68,74,75,86,87,102,105,
            107,104,54,106,47,64,66,70,73,76,
            83,89,98,11,12,7,8,112,120,14,
            53,55,61,67,84,88,90,94,97,99,
            109,110,111,19,93,63,91,101,95,1,
            77,122,103,20,46,58,78,44,121,33,
            30,118,119,96,108,49,50,56,57,59,
            69,71,72,85,92,17,18,65,21,22,
            6,23,24,25,26,27,32,4,15,16,
            28,29,34,35,36,37,38,39,40,41,
            42,43,51,80,81,82,5,117,3,123,
            62,116
        };
    };
    public final static char terminalIndex[] = TerminalIndex.terminalIndex;
    @Override
    public final int terminalIndex(int index) { return terminalIndex[index]; }

    public interface NonterminalIndex {
        public final static char nonterminalIndex[] = {0,
            130,135,136,0,0,134,0,0,237,243,
            133,0,143,0,132,0,0,142,148,0,
            0,149,158,159,160,161,188,151,0,126,
            162,141,163,164,165,166,131,167,128,168,
            0,129,138,137,170,169,171,185,0,0,
            195,152,172,0,173,0,0,0,0,0,
            174,175,176,0,177,180,0,155,194,0,
            0,0,212,0,0,145,209,213,0,214,
            127,179,0,0,0,0,0,0,183,0,
            0,0,0,125,186,0,0,210,216,217,
            218,0,220,157,0,146,0,0,215,197,
            198,199,201,227,228,182,204,0,0,219,
            0,0,0,0,0,248,0,251,0,252,
            0,147,187,189,190,191,192,196,200,203,
            0,206,0,207,0,222,225,0,0,0,
            246,247,0,0,139,140,144,0,0,154,
            156,0,178,0,193,0,0,0,202,0,
            205,211,0,223,224,0,0,229,232,0,
            234,236,0,240,241,242,245,0,0,249,
            124,0,150,153,0,181,0,184,0,0,
            208,221,226,0,0,230,231,233,235,0,
            238,239,244,250,253,254,0,0,0,0,
            0,0,0,0,0
        };
    };
    public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
    @Override
    public final int nonterminalIndex(int index) { return nonterminalIndex[index]; }

    public interface ScopePrefix {
        public final static char scopePrefix[] = {
            172,324,608,627,317,332,559,575,586,597,
            372,280,294,311,344,55,305,392,430,180,
            616,502,20,33,64,84,93,98,103,143,
            208,339,350,20,467,157,286,300,530,40,
            157,382,20,635,40,230,259,1,14,27,
            74,89,119,27,361,365,448,495,524,551,
            555,645,649,653,110,7,110,410,426,439,
            460,479,543,129,129,245,439,566,582,593,
            604,220,513,69,69,169,235,238,69,254,
            275,238,238,69,369,492,499,169,69,668,
            123,355,414,454,486,472,69,355,401,190,
            117,452,657,664,657,664,78,420,150,117,
            117,264
        };
    };
    public final static char scopePrefix[] = ScopePrefix.scopePrefix;
    @Override
    public final int scopePrefix(int index) { return scopePrefix[index]; }

    public interface ScopeSuffix {
        public final static char scopeSuffix[] = {
            18,148,5,5,148,148,5,5,5,5,
            379,148,108,148,25,61,291,398,436,186,
            80,508,25,38,38,38,72,72,108,148,
            213,31,31,25,5,162,291,114,535,51,
            165,387,622,640,45,224,224,5,18,31,
            5,72,108,31,108,108,148,257,5,5,
            5,5,5,257,666,11,114,379,379,379,
            464,483,535,133,138,249,443,570,570,570,
            570,224,517,72,72,5,5,241,243,257,
            5,278,278,243,108,5,257,5,528,5,
            126,358,417,457,489,475,547,538,404,193,
            108,108,659,659,661,661,80,422,152,215,
            200,266
        };
    };
    public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
    @Override
    public final int scopeSuffix(int index) { return scopeSuffix[index]; }

    public interface ScopeLhs {
        public final static char scopeLhs[] = {
            48,112,18,18,92,112,18,18,18,18,
            85,97,49,92,111,90,59,85,84,48,
            18,20,190,3,7,8,182,182,178,110,
            48,111,111,139,45,148,60,49,157,125,
            148,85,18,18,125,102,72,153,88,190,
            185,182,178,139,199,57,66,161,19,18,
            18,18,18,18,12,130,178,85,84,84,
            64,41,157,114,114,68,84,18,18,18,
            18,102,20,186,182,201,100,109,74,80,
            73,172,89,139,86,162,161,192,157,17,
            178,139,116,83,22,45,157,157,85,48,
            178,79,155,44,155,44,185,116,110,48,
            48,72
        };
    };
    public final static char scopeLhs[] = ScopeLhs.scopeLhs;
    @Override
    public final int scopeLhs(int index) { return scopeLhs[index]; }

    public interface ScopeLa {
        public final static byte scopeLa[] = {
            113,73,72,72,73,73,72,72,72,72,
            72,73,39,73,1,64,1,72,121,69,
            3,72,1,64,64,64,1,1,39,73,
            69,1,1,1,72,73,1,1,4,64,
            68,39,1,1,64,72,72,72,113,1,
            72,1,39,1,39,39,73,118,72,72,
            72,72,72,118,1,72,1,72,72,72,
            71,71,4,1,1,5,72,64,64,64,
            64,72,3,1,1,72,72,3,1,118,
            72,1,1,1,39,72,118,72,6,72,
            1,55,70,71,72,64,1,55,75,74,
            39,39,4,4,4,4,3,1,69,1,
            1,3
        };
    };
    public final static byte scopeLa[] = ScopeLa.scopeLa;
    @Override
    public final int scopeLa(int index) { return scopeLa[index]; }

    public interface ScopeStateSet {
        public final static char scopeStateSet[] = {
            68,175,267,267,90,175,267,267,267,267,
            78,92,68,90,175,90,70,78,78,68,
            267,267,62,197,243,243,53,53,65,175,
            68,175,175,177,104,354,70,68,129,371,
            354,78,267,267,371,362,181,46,78,62,
            26,53,65,177,22,70,29,56,267,267,
            267,267,267,267,247,6,65,78,78,78,
            112,327,129,175,175,134,78,267,267,267,
            267,362,267,26,53,24,362,364,181,358,
            181,59,186,177,78,50,56,132,129,267,
            65,177,1,78,268,104,129,129,78,68,
            65,11,101,150,101,150,26,1,175,68,
            68,181
        };
    };
    public final static char scopeStateSet[] = ScopeStateSet.scopeStateSet;
    @Override
    public final int scopeStateSet(int index) { return scopeStateSet[index]; }

    public interface ScopeRhs {
        public final static char scopeRhs[] = {0,
            338,3,59,0,126,0,337,3,113,0,
            126,180,0,127,188,74,0,224,0,197,
            166,126,10,0,136,0,166,126,10,0,
            135,0,272,127,54,124,0,20,0,309,
            127,54,55,0,20,53,0,33,132,0,
            20,53,0,0,309,127,54,55,215,0,
            20,186,0,272,127,54,132,0,189,126,
            0,141,0,227,3,308,0,308,0,2,
            0,126,0,272,127,54,131,0,189,126,
            237,0,189,126,22,237,0,189,126,332,
            22,0,128,197,166,126,0,128,0,197,
            166,126,0,134,128,0,172,0,328,127,
            172,0,127,172,0,230,128,0,166,327,
            235,0,136,0,0,0,0,135,0,0,
            0,0,326,127,164,236,0,127,0,236,
            0,129,0,0,127,0,325,127,164,271,
            0,127,0,0,44,127,0,0,150,3,
            0,127,296,295,127,74,294,172,0,295,
            127,74,294,172,0,223,0,224,0,294,
            172,0,96,0,0,223,0,224,0,211,
            96,0,0,223,0,224,0,295,127,294,
            172,0,223,0,211,0,0,223,0,240,
            127,3,0,126,0,0,0,0,0,240,
            127,3,222,0,231,3,0,220,127,0,
            216,0,146,0,176,166,126,0,10,0,
            0,0,0,226,60,0,125,0,240,127,
            3,195,0,195,0,2,0,0,126,0,
            0,0,0,0,211,3,0,209,0,253,
            127,164,38,27,0,189,126,61,63,0,
            204,128,0,128,189,126,292,63,0,189,
            126,292,63,0,189,126,70,123,61,0,
            253,127,164,263,61,0,253,127,164,263,
            239,61,0,289,290,127,164,123,322,56,
            0,289,290,127,164,322,56,0,189,126,
            288,56,0,197,189,126,288,235,0,189,
            126,288,235,0,166,126,0,93,136,0,
            286,127,149,0,286,127,172,0,159,84,
            0,317,161,319,320,3,81,0,126,179,
            0,319,320,3,81,0,128,0,126,179,
            0,159,3,75,204,80,0,126,128,0,
            204,80,0,108,2,131,126,128,0,238,
            3,75,0,211,174,0,33,169,0,174,
            0,183,33,169,0,238,3,85,0,204,
            152,238,3,83,0,62,179,0,238,3,
            83,0,126,179,62,179,0,318,127,164,
            0,159,0,226,77,0,30,179,0,159,
            102,185,0,30,177,0,148,64,167,3,
            0,167,3,0,20,161,126,0,159,102,
            162,0,30,169,0,198,3,0,126,149,
            0,227,3,0,226,60,283,0,159,60,
            0,198,3,314,67,126,0,126,0,0,
            0,0,314,67,126,0,2,145,126,0,
            0,0,0,198,3,46,0,147,0,125,
            55,166,126,0,31,147,0,93,136,31,
            147,0,228,189,126,0,146,31,147,0,
            198,3,50,0,159,3,50,0,159,3,
            64,198,54,42,0,198,54,42,0,20,
            2,131,126,0,159,3,64,198,54,45,
            0,198,54,45,0,159,3,64,198,54,
            47,0,198,54,47,0,159,3,64,198,
            54,43,0,198,54,43,0,227,3,125,
            197,166,126,10,0,125,197,166,126,10,
            0,136,2,0,126,0,227,3,124,276,
            166,126,10,0,276,166,126,10,0,135,
            2,0,126,0,227,3,135,0,227,3,
            140,0,159,60,140,0,278,0,31,0,
            31,139,0,165,0,134,0,159,3,0
        };
    };
    public final static char scopeRhs[] = ScopeRhs.scopeRhs;
    @Override
    public final int scopeRhs(int index) { return scopeRhs[index]; }

    public interface ScopeState {
        public final static char scopeState[] = {0,
            6247,6371,6352,6345,0,2420,2827,2091,2762,0,
            5209,5147,5085,5023,4961,4899,4837,4775,4713,4483,
            4421,4263,0,1307,0,2486,701,0,5209,5147,
            3109,2556,5085,5023,4961,4899,4837,4775,2498,4713,
            4483,4421,2364,2358,0,2399,1316,1266,0,2597,
            1304,0,2614,1499,0,723,704,0,903,5951,
            0,6159,5370,0,6215,6147,0,6215,6147,5794,
            6121,6108,5781,6047,5986,5768,5970,5209,5147,5085,
            5023,4961,4899,4837,4775,4713,4483,4421,0,6215,
            6147,5794,6121,6108,5781,6047,5986,5768,5970,0,
            2994,2663,0,3382,3445,3628,3537,3862,3822,3710,
            672,2966,996,2900,2834,2768,2702,2636,2570,2504,
            2438,2372,2306,2240,927,835,766,0,2733,866,
            0,794,0,654,5938,4600,3474,3902,2956,4187,
            2428,3008,6241,4666,4585,6182,2939,1400,0,6189,
            6055,6048,5964,5790,5769,5176,5114,6068,5803,4441,
            4333,5052,4990,4928,4866,4804,4250,3939,923,3377,
            718,4742,4230,0,6159,5370,600,5866,4235,0,
            5938,903,3902,5951,4585,4572,4350,2601,2271,654,
            4378,2469,4187,3889,3849,0,1859,1812,6189,6055,
            6048,1765,1718,5964,1671,5790,5769,2141,5176,2094,
            5114,6068,2047,2000,1953,1906,5775,5803,1607,4441,
            1513,4333,1561,5052,4990,1414,4928,4866,1269,4804,
            4250,2235,3939,923,3377,2188,718,4742,5866,4230,
            814,4235,2864,2402,1618,799,4572,4350,2601,2271,
            654,5938,4378,903,3902,2469,4187,5951,2798,1062,
            1027,2733,866,4585,3889,3849,5746,2966,4200,996,
            3382,2900,2834,2768,2702,2636,2570,2504,2438,2372,
            2306,2240,3445,3628,3537,3862,3822,3710,4160,4133,
            4106,5723,672,5700,927,835,766,1080,1324,3593,
            3501,3790,3758,3676,4395,4307,4079,4052,4020,3993,
            5346,5322,5298,4688,4612,5677,5654,5631,5608,5585,
            5561,5532,5509,5442,5416,5385,3032,3319,3277,3220,
            3178,3121,3079,2193,2146,1471,2099,2052,2005,1958,
            1911,1864,1817,1770,1723,1676,1629,600,1424,1372,
            1565,1519,1277,1173,1126,1222,0,901,891,803,
            653,4666,4585,4572,3167,4435,3889,645,3849,0,
            4727,4850,4724,1076,0
        };
    };
    public final static char scopeState[] = ScopeState.scopeState;
    @Override
    public final int scopeState(int index) { return scopeState[index]; }

    public interface InSymb {
        public final static char inSymb[] = {0,
            0,313,55,10,41,54,243,243,127,70,
            70,309,149,127,174,64,68,70,231,211,
            60,222,223,200,195,6,124,131,8,132,
            126,4,3,127,256,257,236,258,235,259,
            56,287,260,124,10,126,127,3,41,50,
            42,45,47,43,10,135,3,126,46,40,
            6,35,34,5,7,37,36,140,145,147,
            146,153,148,156,155,158,157,160,59,162,
            70,70,226,162,3,3,124,123,54,54,
            174,60,3,66,67,54,189,165,166,231,
            211,127,220,126,176,164,327,288,322,288,
            126,189,166,220,127,243,3,54,54,54,
            54,126,3,198,159,127,66,67,166,3,
            125,117,119,3,60,91,98,35,34,100,
            99,5,90,89,64,54,86,87,7,93,
            92,95,94,96,112,111,110,109,108,107,
            106,105,104,103,70,102,101,127,127,127,
            127,127,60,60,127,4,197,240,241,242,
            126,166,7,5,127,166,243,125,124,126,
            123,164,126,166,55,70,198,159,198,198,
            198,198,166,227,127,152,285,135,125,124,
            10,126,60,314,3,198,55,126,55,227,
            159,146,146,145,145,145,148,148,148,148,
            147,147,155,153,153,157,156,158,159,160,
            240,240,272,127,250,3,167,148,175,169,
            183,177,184,185,274,272,220,272,278,197,
            152,68,166,176,176,326,126,170,237,61,
            55,215,63,172,329,125,124,244,244,189,
            164,127,189,197,126,64,64,64,64,197,
            276,68,126,166,216,3,315,174,150,189,
            166,71,152,152,256,257,258,259,336,260,
            10,167,90,89,54,7,93,92,95,94,
            96,112,111,110,109,108,107,106,105,104,
            103,70,102,101,68,4,127,5,127,166,
            263,239,54,55,292,294,127,3,195,244,
            244,127,127,197,127,290,123,291,3,3,
            3,3,125,124,166,55,198,127,127,228,
            6,55,127,127,126,64,148,148,148,169,
            167,167,177,175,183,159,184,229,173,176,
            197,164,263,64,54,126,74,127,220,328,
            71,303,211,124,127,127,127,71,290,289,
            70,68,159,159,159,159,3,3,197,152,
            280,283,60,190,4,123,125,229,229,166,
            148,71,127,127,128,127,164,27,55,172,
            65,61,63,127,189,127,295,71,68,71,
            70,220,331,237,22,126,289,227,227,125,
            127,3,60,159,4,127,127,197,59,253,
            255,127,38,127,3,123,61,309,128,295,
            164,307,126,308,68,126,22,332,189,280,
            227,226,3,253,127,164,286,266,293,38,
            70,126,64,296,127,68,189,3,189,126,
            126,338,127,3,70,68,152,126,189,127,
            318,79,77,1,159,9,85,83,81,80,
            75,82,84,78,76,61,74,227,189,189,
            68,253,150,164,271,189,239,297,113,9,
            71,226,71,3,3,3,204,3,123,159,
            123,188,127,164,239,3,71,238,174,238,
            320,149,75,238,127,127,97,337,174,152,
            211,152,319,127,3,152,297,325,152,152,
            127,70,204,161,286,159,203,68,121,317,
            152,203,9,152
        };
    };
    public final static char inSymb[] = InSymb.inSymb;
    @Override
    public final int inSymb(int index) { return inSymb[index]; }

    public interface Name {
        public final static String name[] = {
            "",
            "[",
            "(",
            ".",
            ".*",
            "->",
            "->*",
            "++",
            "--",
            "&",
            "*",
            "+",
            "-",
            "~",
            "!",
            "/",
            "%",
            ">>",
            "<<",
            "<",
            ">",
            "<=",
            ">=",
            "==",
            "!=",
            "^",
            "|",
            "&&",
            "||",
            "?",
            ":",
            "::",
            "...",
            "=",
            "*=",
            "/=",
            "%=",
            "+=",
            "-=",
            ">>=",
            "<<=",
            "&=",
            "^=",
            "|=",
            ",",
            "$empty",
            "asm",
            "auto",
            "bool",
            "break",
            "case",
            "catch",
            "char",
            "class",
            "const",
            "const_cast",
            "continue",
            "default",
            "delete",
            "do",
            "double",
            "dynamic_cast",
            "else",
            "enum",
            "explicit",
            "export",
            "extern",
            "false",
            "float",
            "for",
            "friend",
            "goto",
            "if",
            "inline",
            "int",
            "long",
            "mutable",
            "namespace",
            "new",
            "operator",
            "private",
            "protected",
            "public",
            "register",
            "reinterpret_cast",
            "return",
            "short",
            "signed",
            "sizeof",
            "static",
            "static_cast",
            "struct",
            "switch",
            "template",
            "this",
            "throw",
            "try",
            "true",
            "typedef",
            "typeid",
            "typename",
            "union",
            "unsigned",
            "using",
            "virtual",
            "void",
            "volatile",
            "wchar_t",
            "while",
            "integer",
            "floating",
            "charconst",
            "stringlit",
            "identifier",
            "Completion",
            "EndOfCompletion",
            "Invalid",
            "RightBracket",
            "RightParen",
            "RightBrace",
            "SemiColon",
            "LeftBrace",
            "ERROR_TOKEN",
            "EOF_TOKEN",
            "type_parameter_start",
            "]",
            ")",
            "}",
            ";",
            "{",
            "identifier_token",
            "expression",
            "id_expression",
            "qualified_or_unqualified_name",
            "unqualified_id_name",
            "identifier_name",
            "template_id_name",
            "nested_name_specifier",
            "class_or_namespace_name",
            "nested_name_specifier_with_tem" +
            "plate",
            "class_or_namespace_name_with_t" +
            "emplate",
            "class_name",
            "postfix_expression",
            "simple_type_specifier",
            "pseudo_destructor_name",
            "type_id",
            "type_name",
            "destructor_type_name",
            "unary_expression",
            "cast_expression",
            "new_type_id",
            "expression_list",
            "type_specifier_seq",
            "new_declarator",
            "new_pointer_operators",
            "ptr_operator",
            "new_array_expressions",
            "constant_expression",
            "pm_expression",
            "multiplicative_expression",
            "additive_expression",
            "shift_expression",
            "relational_expression",
            "equality_expression",
            "and_expression",
            "exclusive_or_expression",
            "inclusive_or_expression",
            "logical_and_expression",
            "logical_or_expression",
            "assignment_expression",
            "relational_expression_inTempla" +
            "te",
            "equality_expression_inTemplate",
            "and_expression_inTemplate",
            "exclusive_or_expression_inTemp" +
            "late",
            "inclusive_or_expression_inTemp" +
            "late",
            "logical_and_expression_inTempl" +
            "ate",
            "logical_or_expression_inTempla" +
            "te",
            "assignment_expression_inTempla" +
            "te",
            "expression_list_actual",
            "statement",
            "compound_statement",
            "statement_seq",
            "condition",
            "declarator",
            "for_init_statement",
            "function_definition",
            "declaration",
            "declaration_seq",
            "declaration_specifiers",
            "simple_declaration_specifiers",
            "class_declaration_specifiers",
            "elaborated_declaration_specifi" +
            "ers",
            "enum_declaration_specifiers",
            "type_name_declaration_specifie" +
            "rs",
            "no_type_declaration_specifier",
            "cv_qualifier",
            "no_type_declaration_specifiers",
            "class_specifier",
            "elaborated_type_specifier",
            "enum_specifier",
            "type_name_specifier",
            "class_keyword",
            "enumerator_list",
            "enumerator_definition",
            "namespace_name",
            "init_declarator_list",
            "init_declarator_complete",
            "complete_declarator",
            "initializer",
            "direct_declarator",
            "ptr_operator_seq",
            "function_declarator",
            "basic_direct_declarator",
            "array_direct_declarator",
            "array_modifier",
            "abstract_declarator",
            "direct_abstract_declarator",
            "basic_direct_abstract_declarat" +
            "or",
            "array_direct_abstract_declarat" +
            "or",
            "parameter_declaration_list",
            "parameter_declaration",
            "parameter_init_declarator",
            "parameter_initializer",
            "function_body",
            "handler_seq",
            "initializer_clause",
            "initializer_seq",
            "class_head",
            "access_specifier_keyword",
            "member_declaration",
            "member_declarator_list",
            "member_declaration_list",
            "member_declarator_complete",
            "constant_initializer",
            "bit_field_declarator",
            "base_specifier_list",
            "base_specifier",
            "conversion_function_id",
            "conversion_type_id",
            "conversion_declarator",
            "mem_initializer_list",
            "mem_initializer",
            "mem_initializer_name",
            "operator_id_name",
            "overloadable_operator",
            "template_parameter_list",
            "template_parameter",
            "template_argument_list",
            "template_argument",
            "type_name_specifier_inTemplate",
            "type_name_declaration_specifie" +
            "rs_inTemplate",
            "type_specifier_seq_inTemplate",
            "handler",
            "exception_declaration",
            "type_id_list"
        };
    };
    public final static String name[] = Name.name;
    public final String name(int index) { return name[index]; }

    public final static int
           ERROR_SYMBOL      = 62,
           SCOPE_UBOUND      = 121,
           SCOPE_SIZE        = 122,
           MAX_NAME_LENGTH   = 43;

    public final int getErrorSymbol() { return ERROR_SYMBOL; }
    public final int getScopeUbound() { return SCOPE_UBOUND; }
    public final int getScopeSize() { return SCOPE_SIZE; }
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }

    public final static int
           NUM_STATES        = 604,
           NT_OFFSET         = 122,
           LA_STATE_OFFSET   = 7583,
           MAX_LA            = 2147483647,
           NUM_RULES         = 599,
           NUM_NONTERMINALS  = 225,
           NUM_SYMBOLS       = 347,
           SEGMENT_SIZE      = 8192,
           START_STATE       = 1076,
           IDENTIFIER_SYMBOL = 0,
           EOFT_SYMBOL       = 120,
           EOLT_SYMBOL       = 120,
           ACCEPT_ACTION     = 6544,
           ERROR_ACTION      = 6984;

    public final static boolean BACKTRACK = true;

    public final int getNumStates() { return NUM_STATES; }
    public final int getNtOffset() { return NT_OFFSET; }
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
    public final int getMaxLa() { return MAX_LA; }
    public final int getNumRules() { return NUM_RULES; }
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
    public final int getNumSymbols() { return NUM_SYMBOLS; }
    public final int getSegmentSize() { return SEGMENT_SIZE; }
    public final int getStartState() { return START_STATE; }
    public final int getStartSymbol() { return lhs[0]; }
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
    public final int getAcceptAction() { return ACCEPT_ACTION; }
    public final int getErrorAction() { return ERROR_ACTION; }
    public final boolean isValidForParser() { return isValidForParser; }
    public final boolean getBacktrack() { return BACKTRACK; }

    public final int originalState(int state) {
        return -baseCheck[state];
    }
    public final int asi(int state) {
        return asb[originalState(state)];
    }
    public final int nasi(int state) {
        return nasb[originalState(state)];
    }
    public final int inSymbol(int state) {
        return inSymb[originalState(state)];
    }

    public final int ntAction(int state, int sym) {
        return baseAction[state + sym];
    }

    public final int tAction(int state, int sym) {
        int i = baseAction[state],
            k = i + sym;
        return termAction[termCheck[k] == sym ? k : i];
    }
    public final int lookAhead(int la_state, int sym) {
        int k = la_state + sym;
        return termAction[termCheck[k] == sym ? k : la_state];
    }
}
